温故知新(二)function user(obj){ obj.name = ‘aaa‘; obj = new Object(); obj.name = ‘bbb‘; } le

题目一

题目描述:

关于 Object.difineProperty 描述正确的是?(多选)

  • A. Object.defineProperty() 方法会直接在一个对象上定义一个新的属性,或者修改一个对象的现有属性,并返回这个对象。
  • B.一旦使用 Object.defineProperty 给对象添加属性,如果不设置属性的特性,那么 configurable、enumerable、writable 这些值都是默认的 false。
  • C.除了可以给新定义的属性设置特性,也可以给已有的属性设置特性。
  • D.在 ie8 下不能在 DOM 对象上使用,可以在原生的对象上使用 Object.defineProperty()。
  • E.当使用了 getter 或 setter 方法,可以使用 writable 和 value 这两个属性。

 

答案:

A B C

解析:

  • D : 在 ie8 下只能在 DOM 对象上使用,尝试在原生对象上使用 Object.defineProperty() 会报错。
  • E : 当使用了getter 或 setter 方法,不允许使用 writable 和 value 这两个属性。

 

题目二

题目描述:写出下面代码的执行结果,并解释为什么

function user(obj){
    obj.name = 'aaa';
    obj = new Object();
    obj.name = 'bbb';
}

let person = new Object();
user(person);
console.log(person.name);

答案:

'aaa'

解析:

  • 对象作为参数,传递进去的是这个对象的地址,obj.name 是给 person 这个对象赋值,obj = new Object() ,把 obj 指向另外一个对象,obj.name 现在是给这个新对象赋值,不影响 person 这个变量指向的对象;两个 obj 指向的对象的引用地址不同
  • ECMAScript 中所有的函数的参数都是按值传递的。也就是说,把函数外部的值复制给函数内部的参数,就和把值从一个变量复制到另外一个变量一样。
  • 不过需要注意的是,基本类型的传递如同基本类型变量的复制一样,传递方式是按值传递,这意味着函数体内修改参数的值,不会影响到函数外部,。
  • 而引用类型的值传递,如同引用类型变量的复制一样,传递方式是按引用传递,也就是传入函数的是原始值的地址,因此在函数内部修改参数,将会影响到原始值

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值