首页 新闻 赞助 找找看

JS中原型与继承的问题

0
悬赏园豆:10 [已解决问题] 解决于 2014-04-10 09:26
1       var o =function(){};
2         o.prototype.p="123";
3         o.p ="321";
4         console.log(o.p);//输出321
5 
6         var test =function(){};
7         test.prototype.name ="zhangsan";
8         test.name="lisi";
9         console.log(test.name);//输出空字符串

重新定义的属性应该是继承自原型属性,那么p和name属性应该是覆盖了原型属性,所以读取时不应该是读取的常规属性而非继承属性么?为什么第二次输出的结果这么匪夷所思?求指导!

IE浏览器可以返回"lisi",但火狐和Chrome返回空字符串.Why?

VinceChueng的主页 VinceChueng | 初学一级 | 园豆:81
提问于:2014-04-09 15:32
< >
分享
最佳答案
0

name为js保留关键字,此处的test为一个函数体,函数体的name为其本身。

例如:

var test =function(){}; 可以写成 function test(){};

那么test.name即时其本身"test"。

 

function test(){}
console.log(test.name);

再说了你这种继承性不对啊,要实例化为对象。

var test =function(){};
test.prototype.name2 ="zhangsan";
var t1=new test();
t1.name="lili";
console.log(t1.name);
收获园豆:10
小胆粗心 | 菜鸟二级 |园豆:300 | 2014-04-09 17:22

谢谢!!

那个继承一定要是实例继承对象么?对象的属性不能继承原型属性么?好绕,还是一知半解啊!

为什么

function test(){} console.log(test.name);//是输出test
var test =function(){}; console.log(test.name);//输出空字符串呢 两者不是一样么
VinceChueng | 园豆:81 (初学一级) | 2014-04-09 17:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册