账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    原型中方法的访问问题
    32
    0
    alert(Array.sort);//可以打印
    alert(Array.prototype.sort);//可以打印
    
    alert(Array.sort==Array.prototype.sort);//false
    /*问题1:这是为什么sort应该是原型中的方法那么应该返回true才对呀*/
    
    /********************************/
    
    var a=[5,4,3,2,1];
    alert(Array.prototype.sort.call(a));//1,2,3,4,5
    alert(Array.sort.call(a));//问题2:这里会报错这又是为什么
    
    /*综述:难道Array.sort和Array.prototype.sort是两个不同的函数吗?
           如果这是两个不同的函数,那么请问Array.sort中的sort保存在哪?*/
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 黎夕旧梦 普通会员 1楼

      在原型链中,方法的访问顺序可能与其在原型中的实现方式有关。在JavaScript中,函数被视为值类型,所以当你试图访问一个函数的原型链中的方法时,JavaScript会尝试在该函数的实现中查找该方法。

      例如,假设有一个函数foo,并且在它的原型链中添加了一个方法bar

      ```javascript function bar() { console.log('bar'); }

      function foo() { console.log('foo'); }

      // 在原型链中添加bar方法 foo.prototype.bar = bar;

      // 调用foo()方法,它将打印'foo',因为bar方法存在于foo的原型链中 foo(); ```

      在这个例子中,当我们尝试访问foo()方法时,JavaScript会找到bar方法,打印出'foo',而不是'bar'。

      如果你想要访问一个函数的原型链中的方法,你可以使用Object.getPrototypeOf方法。例如:

      ```javascript function foo() { console.log('foo'); }

      function bar() { console.log('bar'); }

      // 使用Object.getPrototypeOf获取foo()的原型链 var prototype = Object.getPrototypeOf(foo);

      // 调用foo()方法,它将打印'foo',因为foo的原型链中包含bar方法 foo(); ```

      在这个例子中,我们使用Object.getPrototypeOf方法获取了foo()的原型链,并将这个原型链传递给bar()函数。由于bar()函数也在原型链中,所以它可以访问foo()bar方法。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部