javascript中原型链理解

javascript对象问题

原型链问题

var obj= {name: 'seven'};
var A = function(){};
A.prototype = obj;

var a = new A();
console.log(a.__proto__ === A.prototype);
console.log(a.name);

以上代码的对象指向问题:
说明
当对象继承查找发生时,新对象隐藏的属性proto(某些浏览器会将其暴露出来,firefox,chrome)指向自己的构造函数的A.prototype属性,该构造函数的prototype直接指向父对象,这就是原型链。也就是说构造函数会通过自己在新对象和父对象中间建立关系。

在javascript中基本上万物皆对象,和一般语言的面向对象有很大区别。其他语言都是,先有模具(类),然后浇筑(实例化),产生新的对象。但是javascript却是和细胞一样,将自己复制一份产生一个新的细胞。

this指向

  • 作为对象方法调用时,this指向该对象
  • 作为普通函数调用时,this指向全局对象即window
  • 构造器中的this指向返回的那个对象,显式的返回对象,this指向被返回的对象
  • call和apply将动态的传入函数的this

apply和call

  • apply接受两个参数,第一个参数指向指向函数体内的对象,第二个为数组或类数组,将作为被传递给函数的参数

    var func = function(a, b, c){
        alert([a, b, c]);
    };
    
    func.apply(null, [1, 2, 3]);
    
  • call接受的参数不固定,第一个参数和apply中的一样,后面的依次传入

    var func = function(a, b, c){
        alert([a, b, c]);
    };
    
    func.call(null, 1, 2, 3);
    

第一个参数设置为null时,函数内的this指向默认的数组对象,在浏览器中是window,在ES5的严格模式下为null

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值