原型链-属性问题+探索instanceof
210309
一、原型链-属性问题
- 读取对象的属性值时:会自动到原型链中查找
- 设置对象的属性值时:不会查找原型链,如果当前对象中没有此属性,直接添加
- 方法一般定义在原型中,属性一般通过构造函数定义在对象本身上
function Fn(){
}
Fn.prototype.a = 'xxx'
var fn1 = new Fn()
console.log(fn1.a,fn1) //xxx 原型中的a
var fn2 = new Fn()
fn2.a = 'yyy'
console.log(fn2.a,fn2) //yyy Fn函数中的a
function Person(name,age){
this.name = name
this.age = age
}
Person.prototype.setName = function(name){
this.name = name
}
var p1 = new Person("tom",12)
p1.setName('BOB')
console.log(p1)//12,BOB 属性在函数中,方法在原型里
二、探索instanceof(左边的对象是不是右边的实例)
-
表达式:A(对象) instanceof B(构造函数)(如果B函数的显式原型对象在A对象的原型链上,返回true,否则返回false)
-
一个实例对象有多个原型对象(顶端是Object的原型对象)
-
Function是通过new自己产生的实例