this[property]=val;???

this[property]=val;???


var person={};
person.setPerson=function(property,val){
   this[property]=val;
};
person.setPerson("name","xm");
person.setPerson("father","jack");
console.log(person);

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

使用“.”号,属性名是硬代码,不能在执行时改变。

使用“[ ]”方括号,属性名是一个通过计算属性名而来的字符串。字符串要以是硬代码,也可能是变量,甚至可以是一个调回一个字母串值的函数。 

如果一个属性名在执行产生,方括号是必须,因为[ ] 是引用一个 Javascript 数组的语法。所以,[ ]号记法是必须的。

如果要使用this.property的话,可以如下去写代码:

  function Person(name,age,sex){

          this.name = name;

          this.age =age;           //this 指向的obj对象

          this.sex = sex;       }

      var obj = new Person("ziksang",22,"男")

      alert(obj.name+"\n"+obj.age+"\n"+obj.sex)  


   


  • web_東 提问者 #1
    非常感谢!
    2017-12-07 15:56:15
  • web_東 提问者 #2
    老师,你写的这个是动态对象? function Person(name,age,sex){ this.name = name; this.age =age; //this 指向的obj对象 this.sex = sex; } var obj = new Person("ziksang",22,"男") alert(obj.name+"\n"+obj.age+"\n"+obj.sex)
    2017-12-07 16:00:13
  • web_東 提问者 #3
    var person={}; person.setPerson=function(property,val){ this[property]=val; }; person.setPerson("name","xm"); person.setPerson("father","jack"); console.log(person); 这里的person是静态对象,是吧?
    2017-12-07 16:01:19
好帮手慕糖 2017-12-07 18:35:00

 你好,可以这么理解的哦。

祝学习愉快~

小丸子爱吃菜 2017-12-05 18:00:35

你是想问这种写法什么意思还是?如果是这句话的话,可以看下下面的代码:

JS对象取值的两种方式:

var obj = {abc:"ss",nn:90};

var v1 = obj.abc;//使用点的方式

var v2 = obj["abc"];//使用中括号的方式

祝学习愉快!


  • 提问者 web_東 #1
    this[property]=val;我不明白这样的原理?
    2017-12-05 22:12:12
  • 提问者 web_東 #2
    this.property=val; 这样写无效啊,undefined。
    2017-12-05 22:14:36
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
进击JavaScript核心 2018
  • 参与学习       466    人
  • 提交作业       74    份
  • 解答问题       635    个

JavaScript不仅能实现静态页面到动态特效的转变,还能完成数据的动态交互,但是关于js到底功能有多强大,大家还是有所期待的,本路径将带你深入到js中,一一揭开JavaScript的神秘面纱。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师