点运算符(.)
视频锁定
{$ currentTime | date:'mm:ss' $}
{$ timeLeft | date:'mm:ss' $}
点运算符的左边为一个对象(属性的集合),右边为属性名,应该注意的是右边的值除了作为左边的对象的属性外,同时还可能是它自己的右边的值的对象:
var object = {
field : "self",
printInfo : function(){
print(this.field);
},
outter:{
inner : "inner text",
printInnerText : function(){
print(this.inner);
}
}
}
object.outter.printInnerText();
这个例子中,outter 作为 object 的属性,同时又是 printInnerText()的对象。但是点(.)操作符并不总是可用的,考虑这样一种情况,如果一个对象的属性本身就包含点(.)的键(self.ref),点操作符就无能为力了:
var ref = {
id : "reference1",
func : function(){
return this.id;
}
};
var obj = {
id : "object1",
"self.ref" : ref
};
当我们尝试访问 obj 的”self.ref”这个属性的时候:obj.self.ref,解释器会以为 obj 中有个名为 self 的属性,而 self 对象又有个 ref 的属性,这样会发生不可预知的错误,一个好的解决方法是使用中括号([])运算符来访问:
print(obj["self.ref"].func());
在这种情况下,中括号操作符成为唯一可行的方式,因此,建议在不知道对象的内部结构的时候(比如要遍历对象来获取某个属性的值),一定要使用中括号操作符,这样可以避免一些意想不到的 bug。
在线练习
{$ activeFileHint $}