JavaScript继承问题===求大神们看过来看过来看过来

BunnyMelody 2015-09-15 05:41:40
小白一枚

想定义一个变量List继承自Array,
然后给List添加一系列方法,
我本来是这么做的:

var List = new Array();
List.prototype = {
function1: function (arguments){
//body
},
function2: function (arguments){
//body
}
}


但是这样不对,在使用Array的方法的时候没有问题比如List.push(),可是在使用新定义的function的时候,在function内部没办法将List当作一个数组来对待,比如,访问不到this.length,

不知道问题说清楚了没 ..

貌似是JavaScript的多重继承的样子 ..

想要的效果是List既是一个数组,同时,它可以有自己的方法如function1 function2
...全文
149 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
天际的海浪 2015-09-15
  • 打赏
  • 举报
回复
引用 3 楼 viciousDear 的回复:
如果我有很多个方法function1 function2 function3 .... functionn都是给List,同时不想写成 List.function1 = function(){} 这样分散的方式,想写得集中一点,类似

List = {
    function1: function(){},
    function2: function(){}//当然这样是不对的,只是希望是大概这样子的形式,显得集中些
}
[quote=引用 1 楼 jslang 的回复:]


var List = new Array();
List.function1 = function (arguments){
	alert(this.length);
}
List.push(1);
List.push(2);
List.function1();

[/quote]

function extend(obj1,obj2) {
	for(var n in obj2)
		obj1[n] = obj2[n];
}

var List = new Array();
extend(List,{
    function1: function(){},
    function2: function(){}
});
slwsss 2015-09-15
  • 打赏
  • 举报
回复
var List = function(){} List.prototype = new Array(); List.prototype.function1=function(){alert(this.length)}
BunnyMelody 2015-09-15
  • 打赏
  • 举报
回复
貌似这样还是不行 。。
引用 2 楼 KK3K2005 的回复:
var List = function(){return new Array()} List.prototype = {     function1: function (arguments){     //body     },     function2: function (arguments){     //body     } }
BunnyMelody 2015-09-15
  • 打赏
  • 举报
回复
如果我有很多个方法function1 function2 function3 .... functionn都是给List,同时不想写成 List.function1 = function(){} 这样分散的方式,想写得集中一点,类似

List = {
    function1: function(){},
    function2: function(){}//当然这样是不对的,只是希望是大概这样子的形式,显得集中些
}
引用 1 楼 jslang 的回复:


var List = new Array();
List.function1 = function (arguments){
	alert(this.length);
}
List.push(1);
List.push(2);
List.function1();

KK3K2005 2015-09-15
  • 打赏
  • 举报
回复
var List = function(){return new Array()} List.prototype = {     function1: function (arguments){     //body     },     function2: function (arguments){     //body     } }
天际的海浪 2015-09-15
  • 打赏
  • 举报
回复


var List = new Array();
List.function1 = function (arguments){
	alert(this.length);
}
List.push(1);
List.push(2);
List.function1();

87,916

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧