js原型
凡是通过 new Function() 创建的对象都是函数对象,其他的都是普通对象。
f1,f2,归根结底都是通过 new Function()的方式进行创建的。
Function Object 也都是通过 New Function()创建的。
function f1(){};
var f2 = function(){};
var f3 = new Function('str','console.log(str)');
实例的构造函数属性(constructor)指向构造函数。
每个函数对象都有一个prototype 属性,这个属性指向函数的原型对象。
原型对象(Person.prototype)是 构造函数(Person)的一个实例。
所有的原型对象都会自动获得一个 constructor(构造函数)属性,这个属性(是一个指针)指向 prototype 属性所在的函数(Person)
JS 在创建对象(不论是普通对象还是函数对象)的时候,都有一个叫做proto 的内置属性,用于指向创建它的构造函数的原型对象。
Person.prototype.constructor == Person;
person1.__proto__ == Person.prototype;
person1.constructor == Person;
Object.prototype.__proto__ === null
所有函数对象的proto都指向Function.prototype,它是一个空函数(Empty function)
用对象直接量方式定义的对象其构造器(constructor)指向的是根构造器Object
Person.prototype = {
getName: function() {}
}
Person.prototype.constructor = Object.constructor =
ƒ Object() { [native code] }