构造函数必须大驼峰式
原型,是对象的一部分知识点。对象怎么来的基础上
1定义:原型是function对象的一个属性,它定义了构造函数制造出的对象的公共祖先,通过该构造函数产生的对象,可以继承该原型的属性和方法。原型也是对象 。构造函数生产对象,加new
Person.prototype----原型(系统自带)
Person.prototype={}---相当于构造函数Person()的祖先
例1
Person.prototype.name="橘爸爸";
function Person(){
}
var person = new Person();//构造函数不停调用可以产生多个相似且独立的对象
var person1=new Person();
例2
Person.prototype.LastName="liu";
Person.prototype.say=function(){
console.log("用筷子吃饭");
}
function Person(name,age,sex){
this.name=name;
this.age=age;
this.sex=sex;
}
var person=new Person("yang",23,"male");
2 利用原型的特点和概念,可以提取共有属性
例1
Car.prototype.carName='bmw';
Car.prototype.height=1400;
Car.prototype.long=4900;
function Car(color,owner) {//this.xxx=会产生代码冗余,所以提取共有属性
this.owner=owner;
this.color=color;
}
var car = new Car('red','mine');
var car1= new Car('yellow','yang');
3 原型的增删改查
写法1
Person.prototype.lastName="林";
function Person(name){
this.name=name;
}
var person = new Person("xiong");
写法2
Person.prototype={
name:"xiong",
height:160,
width:40,
}
function Person(){
}
var person = new Person();
function Person(){
}
Car.prototype={
constructor:Person//Car
}
function Car(){
}
var car = new Car();
constructor会返回构造对象的构造函数,系统自带,可以手动更改
4对象如何查看对象的构造函数---->constructor
1、对象如何查看原型-->隐式属性--proto(proto_系统规定命名,尽量别修改__proto_:Person.prototype,
proto的作用是当访问对象属性的时候,如果对象身上没有这个属性,就会通过proto指向的索引去找:后面有没有想要的属性,相当于连接关系)(隐式属性_private)
例子
Person.prototype.name = 'abc';
function Person(){//person构造函数的构造原型可以通过__protro__改变
}
var obj = {
name:"sunny"
}
var person = new Person();
例子
Person.prototype.name = 'sunny';
function Person(){
//上面个Person.prototype在new的时候var this ={__proto__:Person.prototype}
// 指向一新个空间
}
// Person.prototype.name='cherry';//覆盖上面---//情况1
Person.prototype = {
name :'cherry'
}//变成cherry,没new,内部不会发生变化------情况2
var person = new Person();
// Person.prototype.name='cherry';//直接改了属性,没有改空间,覆盖上面---//情况3
Person.prototype = {//换了个新对象,把原型改了
name :'cherry'
}//不会覆盖,还是sunny----------情况4,如下
// Person.prototype={name:"sunny"};
// __proto__=Person.prototype;
//Person.prototype={name:"cherry"};