JS之__proto__和instanceof关键字
- proto
构造函数构造出来的对象,有个属性__proto__ 指向构造出这个对象的构造函数的原型
function Dog({name,type,age}){
//this = new Object();
//添加属性
this.name = name;
this.type = type;
this.age = age;
}
/*
通过构造函数的原型添加方法
*/
Dog.prototype = {
run: function(){
alert(this.name + "会飞快的奔跑");
},
showSelf: function(){
alert(`这是一个${this.type}的,${this.age}岁的,${this.name}叫的小狗`);
}
}
var xiaobai = new Dog({
name: "小白",
type: "拉布拉多",
age: 3
});
alert(xiaobai.__proto__ == Dog.prototype); // true
var xiaohei= new Dog({
name: "小黑",
type: "柴犬",
age: 5
});
alert(xiaohei.__proto__ == Dog.prototype); // true
alert(xiaobai.__proto__ == xiaobai.__proto__ ); // true
- instanceof关键字
判断某个对象是否是这个构造函数构造出来的
语法:object instanceof constructor
object:某个实例对象 constructor:某个构造函数
用来检测 constructor.prototype 是否存在于参数 object 的原型链上。
function Dog({name,type,age}){
//this = new Object();
//添加属性
this.name = name;
this.type = type;
this.age = age;
}
/*
通过构造函数的原型添加方法
*/
Dog.prototype = {
run: function(){
alert(this.name + "会飞快的奔跑");
},
showSelf: function(){
alert(`这是一个${this.type}的,${this.age}岁的,${this.name}叫的小狗`);
}
}
var xiaobai = new Dog({
name: "小白",
type: "拉布拉多",
age: 3
});
alert(xiaobai instanceof Dog) // true