原型中方法的访问问题

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保存在哪?*/


神不在的星期二
浏览 336回答 1
1回答

慕尼黑的夜晚无繁华

题主题目有问题,因为 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;// falseinsMyArray 作为 MyArray 的实例,调用的 sort 方法是 MyArray.prototype.sort;如果用 ES6 的写法就是这样:class MyArray {    constructor() {}    static sort() {}//MyArray.sort    sort() {}//MyArray.prototype.sort}let insMyArray = new MyArray();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript