如何获取prototype属性
实例函数是什么?
实例函数是什么?
1、构造函数(例子中的M)new出来的东西就叫实例
2、构造函数(例子中的M)的prototype属性就叫原型对象
3、原型对象()中的constructor其实就等于构造函数,可以打印一下 //true
这样我们就知道构造函数和原型对象的关系了吧,就是一个闭环。(我知道你在我肚子里,同时你也知道你在谁肚子里)
4、实例(例子中的a1)的__proto__属性其实就是把他new出来的那个构造函数的prototype
可以打印 a1.__proto__ //true
__proto__和prototype的区别?
// 构造函数
function Foo(y) {
// 构造函数将会以特定模式创建对象:被创建的对象都会有y属性
this.y y;
}
// 存放了新建对象的原型引用
// 所以我们可以将之用于定义继承和共享属性或方法
// 所以,和上例一样,我们有了如下代码:
// 继承属性x
10;
// 继承方法calculate
function (z) {
return this.x this.y z;
};
// 使用foo模式创建 b and c
var b new Foo(20);
var c new Foo(30);
// 调用继承的方法
(30); // 60
(40); // 80
// 让我们看看是否使用了预期的属性
console.log(
b.__proto__ , // true
c.__proto__ , // true
// 自动创建了一个特殊的属性constructor
// 指向a的构造函数本身
// 实例b和c可以通过授权找到它并用以检测自己的构造函数
Foo, // true
Foo, // true
Foo // true
b.__proto__.calculate, // true
b.__proto__.calculate // true
);
看看这张图片就明白了