day11---对象,原型,原型链

对象
对象的创建方法

  1. var obj={}
  2. 构造函数–首字母大写(大驼峰)
    1)系统自带函数Object()–首字母大写(大驼峰)
var student = new Object();
student.name = "LiuDehua";
student.age = "20";

这样一来,student对象就创建好了。
new student 产生一个新的对象(外形相同实为两人)。
2)function Car(color){ this.color=color; this.name='BMW'; this.height='1400'; this.length='4900'; this.weight=1000; } var car=new Car("red"); var car1=new Car();
这是另一种较为简单的创建方式。
构造函数的内部原理(new)
(1)在函数体最前面隐式加上this={}
(2)执行this.xxx=xxx;
(3)隐式的返回this

原型prototype
1.function对象的一个属性,他定义了构造函数制造出的对象的公共祖先。通过该构造函数产生的对象,可以继承该原型的属性和方法。原型也是对象。
2.利用原型特点和概念,可以提取共有属性。

Person.prototype.LastName="abc";
 	Person.prototype.name="BMW";
 	function Person(name,age,sex){
 		this.name=name;
 		this.age=age;
 		this.sex=sex;
 	}
 	var person=new Person();

此时person.LastName=abc。
可见,person身上并没有LastName属性,而从其原型prototype上找,并拿来引用。所以我们可以推断出:原型在函数定义的时候就已存在。
我们可以通过修改原型的属性来简化我们的代码及工作量。

Car.prototype={
 		carName:"BMW",
 		lang:4900,
 		height:1400
 	}
 	function Car(color,owner){
 		this.owner=owner;
 		this.color=color;
 	}
 	var car=new Car('red','wang');
 	var car1=new Car('green','li');

将共有属性放入原型中,新的对象中,自身找不到属性,则会从原型中取,符合工厂模式。

proto(是一个隐藏的属性,用来存放原型)
上方讲到创建对象new Object会在函数体最前面隐形的加上this{}。这看似是一个空对象,其实里面放的就是__proto__:Person.prototype
来看一组代码:

Person.prototype.name='abc';
 	function Person(){
 	}
 	var obj={
 		name:"sunny"
 	}
 	var person=new Person();
 	//此时person.name=abc,
 	person.__proto__=obj;
 	//此时person.name="sunny"  被改
 	}

再看一组:

Person.prototype.name="sunny";
	function Person(){

	}
	var person=new Person();
	Person.prototype.name="Mike"
	console.log(person.name);//Mike  prototype被更改
	Person.prototype={
		name:"cherry"
	}
	console.log(person.name);//cherry 

原型链
简单理解就是原型组成的链,对象的__proto__它的是原型,而原型也是一个对象,也有__proto__属性,原型的__proto__又是原型的原型,就这样可以一直通过__proto__想上找,这就是原型链。
绝大多数对象的最终都会继承自Object.prototype。
反例Object.create 。Object.create(原型) 原型只能放object或null。

	var obj={name:"sunny",age:123};
 	var obj1=Object.create(obj)
 	console.log(obj1.name)----"sunny"

——在努力,再努力

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值