JavaScript高级
1. JavaScript 中的变量生存周期只有两个:
函数内的局部执行期间,和函数外引擎的全局执行期间
2. Delete不能删除:
用var声明的变量
不能删除继承自原型的成员
如果你修改了这个成员值,你仍然可以删除它,这将使它恢复到原型的值
事实上是删除了实例的成员表中的值
3. 判断对象中是否含有这个成员 用in ('XMLHttpRequest' in window)
4. 编程的技巧:
在判断之前完成某一种操作
比如:布尔判断,希望在判断之前做一件事,可以
var num;
if(num = 10, true){ //这个括号相当于一个优先级,值是最后一个表达式的值
num = 11; //但是num = 10也会先执行的
}
5. apply和call
apply调用方式:函数.apply(对象,数组形式) 如apply(null,[10])
如果对象为null,则是单纯函数调用模式
call调用方式:函数.call(对象,单个) (null,10)
6. 一个大师级代码
<script type="text/javascript">
//利用原型,可以结构化函数
//在原生js中这种用法很常见
Function.prototype.method = function (name, func) {
this.prototype[name] = func;
return this;
}
var ff = function (n) {
this.name = n;
}
ff.method('say', function () {
alert('你猜' + this.name);
});
var p = new ff('xiaoqiang');
p.say();
</script>
1. JavaScript 中的变量生存周期只有两个:
函数内的局部执行期间,和函数外引擎的全局执行期间
2. Delete不能删除:
用var声明的变量
不能删除继承自原型的成员
如果你修改了这个成员值,你仍然可以删除它,这将使它恢复到原型的值
事实上是删除了实例的成员表中的值
3. 判断对象中是否含有这个成员 用in ('XMLHttpRequest' in window)
4. 编程的技巧:
在判断之前完成某一种操作
比如:布尔判断,希望在判断之前做一件事,可以
var num;
if(num = 10, true){ //这个括号相当于一个优先级,值是最后一个表达式的值
num = 11; //但是num = 10也会先执行的
}
5. apply和call
apply调用方式:函数.apply(对象,数组形式) 如apply(null,[10])
如果对象为null,则是单纯函数调用模式
call调用方式:函数.call(对象,单个) (null,10)
6. 一个大师级代码
<script type="text/javascript">
//利用原型,可以结构化函数
//在原生js中这种用法很常见
Function.prototype.method = function (name, func) {
this.prototype[name] = func;
return this;
}
var ff = function (n) {
this.name = n;
}
ff.method('say', function () {
alert('你猜' + this.name);
});
var p = new ff('xiaoqiang');
p.say();
</script>