读书人

据说是网易的一道面试题各位帮忙看看

发布时间: 2012-04-04 16:38:51 作者: rapoo

据说是网易的一道面试题,各位帮忙看看怎么做
有关JavaScript的面向对象的
[code=JScript]
function x(){
x.a = 1;
x.b = 2;
}
var y = new x();
x.a = 3;
y.b = 4;
[/code]
请问此时,y.a和y.b分别等于多少?
答案是y.a是undefined,很不解啊,求各位帮忙解答,多谢了


[解决办法]
y.a=undefind
y.b=4
很显然的,
因为x.a是静态变量,属于类x,不属于x的对象y,所以x.a=3对y这个对象没有丝毫影响,而构造函数中也并没有定义a属性(需用this.a=..定义)
记得结贴给分
[解决办法]
y=x才等值 y是x new出来的 根本就没有a属性。
[解决办法]
js 是弱类型。支持动态添加属性并赋值。
var y = new x();
x.a = 3;
y.b = 4; // 动态添加属性b并赋值4

y 没有a 属性

结果就是 undefined 和 4
[解决办法]
这道题 ‘坑’

[解决办法]
很简单啊,function x()和new x()根本就不是同一个方法

new x()就相当于是一个新的方法
而且,你又没有定义y.a,你只定义了y.b

对于一个根本不存在的变量,y.a当然是undefindd
[解决办法]
x()没有定义a这个属性,当然是undefine啊

读书人网 >JavaScript

热点推荐