1.原型、原型链
我们创建的每个函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个对象(原型对象)。使用原型的好处是让所有对象实例共享(继承)它所包含的属性和方法。
2. instanceof 运算符
语法:
object instanceof constructor
instanceof
运算符用来检测 constructor.prototype
是否存在于参数 object
的原型链上。
例子:
// 判断 foo 是否是 Foo 类的实例 , 并且是否是其父类型的实例
function Aoo(){}
function Foo(){}
Foo.prototype = new Aoo();//JavaScript 原型继承
var foo = new Foo();
console.log(foo instanceof Foo)//true
console.log(foo instanceof Aoo)//true
用法分析:
function instance_of(L, R) {//L 表示左表达式,R 表示右表达式
var O = R.prototype;// 取 R 的显示原型
L = L.__proto__;// 取 L 的隐式原型
while (true) {
if (L === null)
return false;
if (O === L)// 这里重点:当 O 严格等于 L 时,返回 true
return true;
L = L.__proto__;
}
}