@Yori
2015-04-13T01:05:46.000000Z
字数 1141
阅读 1274
未分类
key
)时,不能通过点运算符访问,而应该使用[]
运算符。
var object = {
field : "self",
printInfo : function () {
print(this.field);//知道一个对象属性的键的时候,一般用点运算符取值
}
}
for(var key in object) {
print(key + ":" + object[key]);
}
==
)与等同运算符(===
)相等运算符会对两边操作数做类型转换,等同不会
prototype
)JS通过原型可以建立传统oop语言中的继承机制,在遍历原型链的时候是自下而上的
例:
funciton Base(name){
this.name = name;
this.getName = function () {
return this.name;
}
}
function Child(id) {
this.id = id;
this.getId = function() {
return this.id;
}
}
Child.prototype = new Base("base");
var c1 = new Child("child");
print(c1.getId());
print(c1.getName());
函数跟其他对象一样都是全局对象的一个属性
function p() {
print("invoke p by ()");
}
p.id="func";
p.type="function";
print(p);//全局变量的一条属性键p,输出其值
print(p.id+p.type);
print(p());
运行结果:
function p() {
print("invoke p by ()");
}
func:function
invoke p by ()
JS的作用域在语法分析阶段而不是执行阶段确定
函数的作用域链有2个对象,一个是调用对象(首先被访问),一个是全局对象
所以函数的顶部声明变量是最合适的做法
在执行函数的时候,js对函数进行两轮处理,第一轮局部变量被声明但没被赋值,而函数参数(如果有的话)被赋值了。
声明和初始化的变量当做执行环境对象的属性被保存。
(function() {
var prinvate_variable = "private";
})();