据说是网易的一道面试题,各位帮忙看看怎么做
有关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啊