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();
添加回答
举报
0/150
提交
取消