为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript深入浅出

Bosn 资深架构师
难度中级
时长 5小时28分
学习人数
综合评分9.60
493人评价 查看评价
9.8 内容实用
9.5 简洁易懂
9.5 逻辑清晰
模块化(封装)的三种形式:
1,var o;
o = function(){
var p1;
var f1 = function(){};
return { prop: p1, func: f1 };
}();
2, var o;
(function(){
o.prop = p1;
o.func = function(){};
})();
3, var o;
o = new function(){
this.prop = p1;
this.func = function(){};
}();
function Father(){ }
Father.fn = function(){ }
function Sun(){
Father.call(this);
}
Sun.prototype = Object.create(Father.prototype);
Sun.prototype.constructor = Sun;
Sun.prototype.fn = function(){
Father.prototype.fn.apply(this);
}
if(!Objecreate)
Object.create = function(proto){
var o = {};
o.prototype = proto;
return o;
}
if(!Object.create){
Object.create = function(proto){
function F(){}
F.prototype = proto;
return new F();
}
}
对象 instanceof 构造器,顺序不能搞混淆视听了
1, p in o; //实例和原型链上的所有属性
2, for(var p in o); //实例和原型链上的所有可枚举的属性
3, o.hasOwnProperty(p); //仅实例属性,不包括原型链上的属性
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
取得原型的三种方法:
1,fn.prototype; //通过构造函数的prototype属性
2,o.__proto__; //通过对象的__proto__属性
3,Object.getPrototypeOf(o); //通过Object的getProtoTypeOf()方法
=> 1 === 2 === 3
1,scriptJava中没有会计作用域,这一点不同于C++;
2,作用域链由内而外,内外不同,内外和一;
3,(function(){
var a;
var b;
})(); 防止全局变量污染环境。
通俗来讲,皮包是指返回函数的函数,内部函数可以访问外部函数作用域中的变量;
皮包的优点:
1,实现一些特殊的服务,你懂的;
2,封装功能;
皮包的缺点:
1,浪费大量内存;
2,消耗性能;
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){ //..... }
2, function fn(x, y){//this}
fn.call(o, x, y); //改变函数的作用域链
fn.apply(o, [x, y]); //同上
fn.bind(o); //将this绑定到指向o
1,function fn(x, y, z){.....};
fn.name; //函数名字符串
fn.length; //函数形参个数
arguments; //传入的实参组成的类数组
arguments.callee; //函数的自引用
那么检查某一属性是否在对象里面,也有用in,是不是属性也是key。so,一切都是key-value 对 for in 遍历的是key。
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
课程须知
1.您至少学习了本站“JS入门”、“JS进阶”两门基础课程。 2.如您具备一定实践经验对学习有很大帮助。 3.如您没有脚本编程开发经验,学习过程有可能会受挫部分内容或示例代码,请“暂时略过不懂的部分,后面章节会阐述”,当然想透彻学习,还需大量实践来体会知识的内涵。
老师告诉你能学到什么?
结合实例,深入解析以下知识内容: 1. 数据类型、表达式和运算符、语句; 2. 对象、数组、变量、函数; 3. this、闭包和作用域; 4. OOP; 5. 正则与模式匹配。

微信扫码,参与3人拼团

微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消