var o = {x: 1, y: 2};
Object.prototype.z1 = 'zhao';
Object.defineProperty(Object.prototype, 'z2', { writable: true, value: 'qian' });
for(var p in o){ console.log(p, ': ', o[p]); }
//x: zhao y: qian z: sun
Object.prototype.z1 = 'zhao';
Object.defineProperty(Object.prototype, 'z2', { writable: true, value: 'qian' });
for(var p in o){ console.log(p, ': ', o[p]); }
//x: zhao y: qian z: sun
2018-04-27
1,scriptJava中没有会计作用域,这一点不同于C++;
2,作用域链由内而外,内外不同,内外和一;
3,(function(){
var a;
var b;
})(); 防止全局变量污染环境。
2,作用域链由内而外,内外不同,内外和一;
3,(function(){
var a;
var b;
})(); 防止全局变量污染环境。
2018-04-26
通俗来讲,皮包是指返回函数的函数,内部函数可以访问外部函数作用域中的变量;
皮包的优点:
1,实现一些特殊的服务,你懂的;
2,封装功能;
皮包的缺点:
1,浪费大量内存;
2,消耗性能;
皮包的优点:
1,实现一些特殊的服务,你懂的;
2,封装功能;
皮包的缺点:
1,浪费大量内存;
2,消耗性能;
2018-04-26
3, bind()不仅能绑定作用域对象,还能绑定部分参数;
function fn(x, y, z){ //.... }
var f1 = fn.bind(null, 100); //var f1 = function(100, y, z){ //.... }
var f2 = f1.bind(null, 200); //var f2 = function(100, 200, z){ //..... }
function fn(x, y, z){ //.... }
var f1 = fn.bind(null, 100); //var f1 = function(100, y, z){ //.... }
var f2 = f1.bind(null, 200); //var f2 = function(100, 200, z){ //..... }
2018-04-26
2, function fn(x, y){//this}
fn.call(o, x, y); //改变函数的作用域链
fn.apply(o, [x, y]); //同上
fn.bind(o); //将this绑定到指向o
fn.call(o, x, y); //改变函数的作用域链
fn.apply(o, [x, y]); //同上
fn.bind(o); //将this绑定到指向o
2018-04-26
1,function fn(x, y, z){.....};
fn.name; //函数名字符串
fn.length; //函数形参个数
arguments; //传入的实参组成的类数组
arguments.callee; //函数的自引用
fn.name; //函数名字符串
fn.length; //函数形参个数
arguments; //传入的实参组成的类数组
arguments.callee; //函数的自引用
2018-04-26
那么检查某一属性是否在对象里面,也有用in,是不是属性也是key。so,一切都是key-value 对 for in 遍历的是key。
2018-04-26
0 in arr1 ,在数组里面in操作符针对索引,也就是key,并不针对value
var arr = ['尼玛的','你妹的','哈哈'];
'尼玛的' in arr //'false'
0 in arr //'true'
for( o in arr){ console.log(arr[o]);}
//尼玛的
//你妹的
// 哈哈
对象里面for in,同样只针对key
var arr = ['尼玛的','你妹的','哈哈'];
'尼玛的' in arr //'false'
0 in arr //'true'
for( o in arr){ console.log(arr[o]);}
//尼玛的
//你妹的
// 哈哈
对象里面for in,同样只针对key
2018-04-26
fn.call(o); //改变函数fn的作用域对象
fn.apply(o); //改变函数fn的作用域对象
fn.bind(o); //将函数fn的作用域绑定到对象o上
fn.apply(o); //改变函数fn的作用域对象
fn.bind(o); //将函数fn的作用域绑定到对象o上
2018-04-25
定义函数的三种形式:
1,函数声明
function fn(){}
2,函数表达式
var fn = function(){};
3,函数对象
var fn = new Function('a', 'b', 'return a + b');
1,函数声明
function fn(){}
2,函数表达式
var fn = function(){};
3,函数对象
var fn = new Function('a', 'b', 'return a + b');
2018-04-25