原型
原型是function对象的一个属性,它定义了构造函数制造出的对象的公共祖先。通过该构造函数产生的对象,可以继承该原型的属性和方法。原型也是对象
- 提取公共属性到原型中
- 通过后代无法修改、增加、删除原型
- constructor(系统自带隐藏属性浅粉色),构造器,返回对象的构造函数,可以手动更改
Person.prototype.LastName="ge" function Person(){ this.Name="xuerongh" } var person=new Person() console.log("原型属性"+person.LastName);//原型属性ge console.log("自身属性"+person.Name);//自身属性xuerongh console.log("构造器"+person.constructor);//构造器function Person(){this.Name="xuerongh"}
- __proto__指向原型,可以自己修改为别的对象
function Person() { //var this = { //__proto__: Person.prototype //} }
原型链
由__proto__是任何对象有的属性,__proto__指向原型,js中万物皆对象,__proto__形成的链条就是原型链。
- Object.create(原型)
- 绝大多数对象最终都会继承自Object.prototype(Object.create(null)不继承)
- toString():undefined、null不能调用,没有包装类、没有原型无法调用toString()。123.tostring()不可以调用.会当作数学符号优先计算。
javascript精度不准
call/apply
- 改变this指向
- call需要把实参按照形参的个数传进去,apply 需要传一个arguments