原型继承
新建一个对象,如果没有明确指定原型,那么它的原型对象将默认指向Object.protorype实现继承
let a = {
x: 1
};
a.__proto__ === Object.prototype;
手动为一个对象指定原型,下面的例子把a对象指定为b对象的原型,实现了继承
let a = {
x: 1
};
let b = {
y: 2,
__proto__: a
};
b.__proto__ === a;
b.x
ES5标准化了一个实现原型继承的可选方法,即使用Object.create函数,作用与上面的例子相同
let a = {
x: 1
};
let b = Object.create(a, {
y: {
value: 2
}
});
b.__proto__ === a
b.x
this
function foo() {
console.log(this);
}
foo();
foo.prototype.constructor();
var bar = {
baz: foo
};
bar.baz();
(bar.baz)();
(bar.baz = bar.baz)();
(bar.baz, bar.baz)();
(false || bar.baz)();
var otherFoo = bar.baz;
otherFoo();