js 深度学习(八)

原型及原型链
prototype是function对象的一个属性 它也是一个对象
prototype是定义构造函数构造出的每个对象的公共祖先
所以被该构造函数构造出来的对象 都可以继承原型上的属性和方法
自己有的属性不会去原型上找
方法写在原型上 属性写在构造函数内部
__proto__是实例化以后的结果 属于实例化对象而不是构造函数
conststuctor指向构造函数本身 构造函数可以修改

插件写法:隔绝变量
立即执行函数加分号
;(function(){
var a = 1;
function Test(){
}
window.Test = Test;
})();
var test = new Test();

原型链的顶端是Object.prototype
普通函数不设置返回值 默认返回undefined,构造函数默认返回this
原型的原型是由object构造的

Object.create(对象,null)//创建对象 自定义原型 把别的对象作为自己的原型继承
Object.create(Obj.prototype) === new Obj()
Object.create(null) //纯粹空对象 连构造函数和原型都没有
//不是所有的对象都继承object.prototype
object.__proto__ //可以更改但是不可以自己指定 自己指定的无法访问属性
undefined null toString() //报错
// 原始值没有属性 数字可以是因为包装类
undefined null toString() //报错
// 原始值没有属性 数字可以是因为包装类
原型方法重写 object不能实现 所以重写
Number.prototype.toString.call(1) //"1"
Object.prototype.toString.call(1) // "[object Number]"
call // 改变this指向 
Car.call(newCar,'Benz','red')
Car.apply(newCar,['Benz','red'])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值