为了账号安全,请及时绑定邮箱和手机立即绑定

原型中方法的访问问题

原型中方法的访问问题

神不在的星期二 2019-03-04 12:13:40
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,5alert(Array.sort.call(a));//问题2:这里会报错这又是为什么/*综述:难道Array.sort和Array.prototype.sort是两个不同的函数吗?       如果这是两个不同的函数,那么请问Array.sort中的sort保存在哪?*/
查看完整描述

1 回答

?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

题主题目有问题,因为 Array.sort 是 undefined,但是大概明白题主要问什么,看案例:


function MyArray(){

    

}

MyArray.prototype.sort=function(){};

MyArray.sort=function(){};

let insMyArray=new MyArray();

自定义类 MyArray ,MyArray.sort 是 MyArray 的静态方法,MyArray.prototype.sort 是 MyArray 原型对象上的方法,两个方法的作用通常是一致的,有的稍微有点区别;


如果两个方法的指针不一致(不指向内存里的同一个函数),那么


MyArray.prototype.sort===MyArray.sort;// false

insMyArray 作为 MyArray 的实例,调用的 sort 方法是 MyArray.prototype.sort;


如果用 ES6 的写法就是这样:


class MyArray {

    constructor() {}

    static sort() {}//MyArray.sort

    sort() {}//MyArray.prototype.sort

}

let insMyArray = new MyArray();


查看完整回答
反对 回复 2019-03-18
  • 1 回答
  • 0 关注
  • 335 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信