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

JavaScript深入浅出

Bosn 资深架构师
难度中级
时长 5小时28分
学习人数
综合评分9.60
492人评价 查看评价
9.8 内容实用
9.5 简洁易懂
9.5 逻辑清晰
  • 针对数组的添加和删除操作

    查看全部
  • 关于Object.creat

    var o={f:function(){retrun this.a+this.b }};

    var p=Object.creat(o);

    这里的p和o的关系是什么?



    p的原型指向o的prototype,Object.create()创建对象是指基于原有对象的原型创建一个新对象,新对象为空对象,新对象继承元对象的属性,位于新对象的原型上。

    查看全部
    0 采集 收起 来源:[JavaScript]this

    2018-04-24

  • 创建对象

    方法1:(字面量)

     var a={x:1,y:2}

    var b={x:1,y:2,

    z:{ n:3,m:4<br> }} 

    方法2,(new/原型链)

    通过new function foo(){}//创建一个函数对象 foo.prototype.z=3;//这个函数对象默认带一个prototype的属性;

    方法3,(Object.create)

    查看全部
  • JavaScript严格模式的语法限制

    查看全部
  • javascript运算符优先级

    查看全部
  • javascript表达式类型

    查看全部
  • 严格模式

    查看全部
  • 表达式

    查看全部
  • https://img1.sycdn.imooc.com//5ad95eb60001b13d12570703.jpg

    查看全部
  • 类型测试小结

    查看全部
  • 严格模式 'use strict'

    不允许为声明的变量

    不允许with

    arguments不能改变参数的值,对象除外

    不允许delete,参数,函数名以及不可配置的属性参数

    不允许八进制字面量

    不允许eval、arguments作为函数名,变量名

    eval拥有独立作用域

    查看全部
  • instanceof:左边对象的原型链上是否有右边构造函数的prototype属性

    查看全部
  • //1、全局的this(浏览器),相当于window

    console.log(this.document === document);  //true

    console.log(this === window);  //true

    this.a = 12;

    console.log(window.a);  //12

    //2、一般函数的this(浏览器)

    function f1(){

    return this;   //this指向全局对象,在浏览器中就是window

    }

    console.log(f1());  //window

    function f2(){

    "use strict";  //在严格模式下,this是undefined

    return this;

    }

    console.log(f2()); //undefined

    //3、作为 对象方法 的函数的this

    var obj = {

    prop: 37, 

    f: function(){          //函数作为obj对象的属性f的值,即作为对象的方法

    return this.prop;   //此时this指向对象obj

    }

    }

    console.log(obj.f());  //37

    //另一种形式

    var obj1 = {prop: 37};  //先定义一个对象

    function foo(){         //在定义一个函数

    return this.prop;

    }

    //如果直接调用 foo()方法,this返回的是浏览器对象window

    //当把函数foo()赋值给对象obj1的属性f时,作为obj1对象的方法,this指向的是对象obj1

    obj1.f = foo;

    console.log(obj1.f()); //37

    //4、对象原型链上的this

    var obj2 = {

    f: function(a,b){   //函数作为对象obj2上的方法f的值

    return this.a + this.b;

    }

    }

    //以obj2为原型创建一个对象p

    var p = Object.create(obj2);

    p.a = 1;  //创建对象p的属性a和b

    p.b = 2;

    console.log(p.f());  //f()是原型上的方法,当p调用f()时,this指向对象p,可以取到属性a和b的值

    //5、get/set方法与this

    function add(){   //定义函数add()

    return this.a + this.b;

    }

    var o = {  //创建对象,有一个get方法

    a: 2,

    b: 3, 

    get mult(){

    return this.a * this.b; 

    }

    }

    Object.defineProperty(o,'add',{  //在对象上添加add()方法

    get: add,

    enumerable: true,   //enumerable必须为true,才能在对象上添加方法

    configurable: true  //configurable必须为true,才能在对象上添加方法

    })

    console.log(o.mult); //6 this指向对象o

    console.log(o.add); //5 上面已将add()添加进对象o中,相当于 对象的方法,所以add()函数中的this指向o

    //6、构造器中的this

    function C1(){

    this.a = 1;

    }

    //C1(); 直接调用函数的话,this返回window

    //以C1为原型创建对象o1,C1()构造器中没有return,this作为返回值。

    var o1 = new C1(); 

    console.log(o1.a); //this作为返回值,即o1.a = this.a = 1

    function C2(){

    this.a = 1;

    return {a:2};  //构造器中有return语句,且返回一个对象{a:2},则此对象作为返回值

    }

    var o2 = new C2(); //以C2作为原型创建对象o2

    console.log(o2.a); //调用原型上的属性a时,返回值不是this,而是对象{a:2},所以 o2.a = 2

    //7、call/apply方法与this

    function add(c,d){

    return this.a + this.b + c + d;

    }

    var o3 = new add();

    o3.a = 1;

    o3.b = 2;

    //调用call和apply方法时,第一个参数必须是对象,让add()函数中的this指向该对象

    var num1 = add.call(o3,3,4);  //3,4相当于参数c,d传入add(c,d)方法中

    console.log(num1);  //1+2+3+4=10

    var num2 = add.apply(o3,[8,9]);  //apply和call的区别是,传进去的是数组

    console.log(num2); //1+2+8+9=20


    查看全部
    0 采集 收起 来源:[JavaScript]this

    2018-04-19

  • https://img1.sycdn.imooc.com//5ad81a7c00013c6a08880540.jpg

    查看全部

举报

0/150
提交
取消
课程须知
1.您至少学习了本站“JS入门”、“JS进阶”两门基础课程。 2.如您具备一定实践经验对学习有很大帮助。 3.如您没有脚本编程开发经验,学习过程有可能会受挫部分内容或示例代码,请“暂时略过不懂的部分,后面章节会阐述”,当然想透彻学习,还需大量实践来体会知识的内涵。
老师告诉你能学到什么?
结合实例,深入解析以下知识内容: 1. 数据类型、表达式和运算符、语句; 2. 对象、数组、变量、函数; 3. this、闭包和作用域; 4. OOP; 5. 正则与模式匹配。

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

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