da24 原型

定义

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

Person.prototype = { } --> 原型
Person.prototype.name = {
	name : "原型属性"
}
function Person(){
	this.name = "自身属性";
}
var person = new Person();

构造函数构造多个对象时,对象的公有属性可以提取到原型上。

Car.prototype = {
	carname : "BMW"
}  
function Car(color, owner){
	this.owner = owner;
	this.color = color;
}
var car  = new Car("red","MrDeng");
var car1 = new Car("black","MrLee");

原型的增删改查

Athlete.prototype.name = "james";
function Athlete(){
}
var athlete = new Athlete();
var athlete1 = new Athlete();

查:Athlete.prototype.name
删: delete Athlete.prototype.name(删除一个不存在的属性,返回true)
增: Athlete.prototype.sex = “male”;
改:Athlete.prototype.name = “Lerborn”;
 (athlete.name = “Lerbron”;//该对象自己生成一个name属性,没有权利改型)

constructor

1、原型上的一个属性:构造器,对象可通过它找构造它的函数。

function Car(){ }
var car = new Car();
car.constructor  --> function Car(){}

2、constructor属性可以修改

function Person(){}
Car.prototype.constructor = Person;
car.constructor --> function Person(){}

_proto_

1、存对象原型,起到连接对象和原型的作用

Person.prototype.name = "GT";
function Person(){
	var this = {
		__proto__:Person.prototype
	}//隐式
}
var person = new Person();

在这里插入图片描述
2、访问对象属性的过程:
person.name --> this.name --> _proto_:Person.prototype.name -->(更高一级的原型)

3、可以修改对象的__proto__属性,即改变指向的原型,但也会因此丢失原本原型内的constructor属性。

Person.prototype.name = "GT";
function Person(){}
var person = new Person();
var Replace = {
	name : "lgt"
}
person.__proto__ = Replace;

4、堆数据摆放原则

例1.

 Person.prototype.name = "gt";
 function Person(){ }
 var person = new Person();
 Person.prototype = {
 	name : "LGT"
 }

person.name --> "gt"

数据摆放过程:

Person.prototype = {name:"gt"};
person.__proto__ = Person.prototype;//已经创建对象了,__proto__已经指向房间
Person.prototype = {name :"LGT"};//创建新的对象原型 跟之前指向的房间无关。

例2.

Person.prototype.name = "gt";
function Person(){
  //var this = {__proto__:Person.prototype}
}//预编译把函数提升了
Person.prototype = {
	name : "LGT"
}//对象还没创建,所以房间还未固定,原型被覆盖。
var person = new Person();

person.name --> "LGT"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值