JS概念整理

2017-07-11  本文已影响0人  Johnny是我啊

_proto_ 和 prototype 的区别

任何对象有一个 [prototype] 属性 (隐藏属性), 指向对象原型。


  1. __proto__ 是每个对象都有的属性, prototype 是函数才有的属性。
  2. __proto__指向的是当前对象的原型对象,prototype指向的以当前函数作为构造函数构造出来的对象的原型对象。
对象字面量构造的对象

[prototype] 指向Object.prototype

new操作符构造的对象

[prototype] 指向构造函数的prototype (每个函数都有一个prototype属性,所指向对象带有constructor属性)。

函数Object.create构造的对象
var person = {
  name : "xxx",
  sex : "male"
}

// Person2的[prototype]指向对象person
var person2 = Object.create(person);

Object.create =  function(p){
  function f(){}
  f.prototype = p;
  return new f();
}

[prototype] 本身是一个隐藏的属性,很多浏览器给每一个对象提供了 _proto_ 这一属性。

万物皆对象, Function是对象, Function.prototype是对象, 都具有对象的共同特点——有_proto_属性。

Function 特有属性 prototype,指向一个对象(原型对象)

上一篇 下一篇

猜你喜欢

热点阅读