首页 > 试题广场 >

下列代码的执行结果 function Fn1(name) {

[单选题]
下列代码的执行结果
function Fn1(name) {
 if(name){
  this.name = name;
 }
}
Fn1.prototype.name="jack"
let a = new Fn1();
console.log('a:', a.name);

function Fn2(name) {
 this.name = name;
}
Fn2.prototype.name="jack"
let b = new Fn2();
console.log('b:', b.name);
  • undefined jack
  • jack jack
  • jack undefined
  • undefined undefined
  • 在 JavaScript 中,所有的对象都有一个隐藏的 [[Prototype]] 属性,它要么是另一个对象,要么就是 null

  • 我们可以使用 obj.__proto__ 访问它(历史遗留下来的 getter/setter,这儿还有其他方法,很快我们就会讲到)。

  • 通过 [[Prototype]] 引用的对象被称为“原型”。

  • 如果我们想要读取 obj 的一个属性或者调用一个方法,并且它不存在,那么 JavaScript 就会尝试在原型中查找它。

  • 写/删除操作直接在对象上进行,它们不使用原型(假设它是数据属性,不是 setter)。

  • 如果我们调用 obj.method(),而且 method 是从原型中获取的,this 仍然会引用 obj。因此,方法始终与当前对象一起使用,即使方法是继承的。

  • for..in 循环在其自身和继承的属性上进行迭代。所有其他的键/值获取方法仅对对象本身起作用。



这里的a实际上没有name属性,因为条件为false,所以使用的是原型上的属性。
发表于 2021-06-23 14:08:15 回复(0)
let a = new Fn1(); 传的参数为空,在函数Fn1中,由于条件if undefined)为false,所以函数不赋值,
发表于 2021-05-31 16:28:01 回复(0)