- 给对象增加一般属性
javascript
data: {
teacher:{}, //教师对象
student:{
age: 14,
grade: 1
}, //学生对象
},
onLoad: function (options) {
this.setData({
'teacher.name' : 'Lee', //给教师对象增加名字属性
})
console.log(this.data.teacher)
},
结果为
- 把变量作为属性的键值(key)赋给对象
data: {
Name : 'name',
teacher:{},
student:{
age: 14,
grade: 1
},
},
onLoad: function (options) {
var Name = this.data.Name
this.data.teacher[Name] = 'lee' //有效的写法
// this.setData({
// 'this.data.teacher[Name]' : 'Lee',
// })
//语句写在setData内会报错,提示[]内只能填0-9数字,暂且不是很懂
console.log(this.data.teacher)
},
我们有一个Name变量,其值是name,如果我们按照问题一中的方法,使用teacher.Name赋值,属性的key只会是’Name’,而不是我们想要的‘name’,这时候我们需要使用[]来完成语法,作者一直在尝试把语句写在setData内,但一直报错,有懂的大神可以解惑一下。附上语句运行截图
3. 把对象作为属性键值key赋给对象
data: {
Name : 'name',
Attrnum: 34,
teacher:{},
student:{
age: 14,
grade: 1
},
student2:{
age: 14,
grade: 1
},
student3:{
age: 13,
grade: 1
}
},
onLoad: function (options) {
var Name = this.data.Name
var student = this.data.student
this.data.teacher[student] = 'lee'
// this.setData({
// 'this.data.teacher[Name]' : 'Lee',
// })
var student2 = this.data.student2
var student3 = this.data.student3
console.log(this.data.teacher)
console.log(this.data.teacher[student])
console.log(this.data.teacher[student2])
console.log(this.data.teacher[student3])
},
按照问题二的方法,把student对象作为属性的键值赋值给teacher对象后,我们又写了student2 和 student3 来进行相关测试,student2 与 student1 属性和值相同,student3有些差别。打印结果如下:
teacher的属性里多的是‘object : lee’ 而不是我们想要的‘student:lee’,且三个对象都可以检索到lee这个值,貌似只要是对象类型,都可以检索到lee。
var Name = this.data.Name
var student = this.data.student
this.data.teacher[student] = 'lee'
var student3 = this.data.student3
this.data.teacher[student3] = 'bob'
// this.setData({
// 'this.data.teacher[Name]' : 'Lee',
// })
console.log(this.data.teacher)
console.log(this.data.teacher[student])
console.log(this.data.teacher[student2])
如果同时插入student 和 student3两个对象,一个赋值为‘lee’,一个赋值为‘bob’,最后结果都是bob,欲哭无泪,只能以后想其他办法了,并且得探究该问题其中的原理。