原型

1.定义

原型是 function 对象的一个属性,它定义了构造函数制造出的对象的公共祖先。通过该构造函数产生的对象,可以继承该原型的属性和方法。原型也是对象

Person.prototype = {	//原型(描述一种继承关系),出生时就被定义好了
    age : 18,
    sex : "nan"
}
function Person(name) {  
    this.name = name
}
var p1 = new Person("xy");
console.log(p1);

在这里插入图片描述

构造函数的实例对象不能直接修改原型上的属性或方法
Person.prototype = {
    age : 18,
    sex : "nan"
}
function Person(name) {  
    this.name = name
}

var p1 = new Person("xy");
p1.age = 19;	//试图修改成19
console.log(p1);

我们打印出来看一下:
在这里插入图片描述
结果发现p1上多了属性age,值是我们设置的19,而原型上还是18没有变

我们可以通过__proto__来修改原型上的属性或方法
Person.prototype = {
    age : 18,
    sex : "nan"
}
function Person(name) {  
    this.name = name
}

var p1 = new Person("xy");
p1.__proto__.age = 19;	
console.log(p1);

我们打印出来看一下:
在这里插入图片描述
结果发现原型上的值已经变了。

2.判断实例对象和构造函数是否有关系

用isPrototypeOf或者instanceof

function Person() {  
}

var p1 = new Person();
console.log(Person.prototype.isPrototypeOf(p1))//true
console.log(p1 instanceof Person)//true

3.删除属性

delete p1.name				//只在实例中删除
delete p1.__proto__.name	//只在原型中删除

4.查找属性

//只在实例中查找是否包含该属性
p1.hasOwnProperty('name')	

//在实例或实例中查找是否包含该属性
'name' in p1;				

//只在原型中查找是否包含该属性
'name' in p1.__proto__;	
'name' in Person.prototype;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章