JavaScript 对象,原型,原型链,this关键字,闭包

对象

  1. 概念

    首先是javaScript的对象概念,与java不同,javaScript的对象是一种复合值:将很多值(原始值或者其他对象)聚合在一起,可通过名字去访问这些值。并且可以将对象看成是属性的无序集合,每一个属性都是一个名/值对。

  2. 原型继承

    JavaScript中的对象除了可以保持自有的属性,JavaScript对象还可以从原型对象中继承属性。对象的方法通常是继承的属性。

原型

  1. 概念

    JavaScript的对象都有一个内置的[[Prototype]]私有属性,这个属性指向另一个对象,我们称这个对象为原对象的原型。当JS引擎访问obj的toString属性时,首先会去obj对象查找,发现找不到,就沿着obj的[prototype]属性去他的原型上查找。

  2. 作用

    在JavaScript中,prototype对象是实现面向对象的一个重要机制。每个函数就是一个对象(Function),函数对象都有一个子对象prototype对象,类是以函数的形式来定义的。prototype表示该函数的原型,也表示一个类的成员的集合。在通过new创建一个类的实例对象的时候,prototype对象的成员都成为实例化对象的成员。

原型链

  1. 概念

    每个函数都有一个原型对象,函数都包含一个指向原型对象的指针。我们让原型对象的实例(1)等于另一个原型对象(2),此时原型对象(2)将包含一个指向原型对象(1)的指针,再让原型对象(2)的实例等于原型对象(3),如此层层递进就构成了实例和原型的链条,这就是原型链的概念。

构造函数

  1. 注意事项

    • 默认函数首字母大写
    • 构造函数并没有显示返回任何东西。new 操作符会自动创建给定的类型并返回他们,当调用构造函数时,new会自动创建this对象,且类型就是构造函数类型。
    • 也可以在构造函数中显示调用return.如果返回的值是一个对象,它会代替新创建的对象实例返回。如果返回的值是一个原始类型,它会被忽略,新创建的实例会被返回。
  2. 函数格式

function Person( name){
  this.name =name;
}
var p1=new Person('John');
//因为构造函数也是函数,所以可以直接被调用,但是它的
//返回值为undefine,此时构造函数里面的this对象等于全局this对象。
  1. 在构造函数中使用原型对象
//比直接在构造函数中写的效率要高的多
Person.prototype.sayName= function(){
    console.log(this.name);
};

this关键字

  1. 在方法中,this 表示该方法所属的对象。
  2. 如果单独使用,this 表示全局对象。
  3. 在函数中,this 表示函数的所有者(object Window)
  4. 在函数中,在严格模式下,this 是未定义的(undefined)。
  5. 在事件中,this 表示接收事件的元素。

闭包

  1. 定义
    当一个内部函数被其外部函数之外的变量引用时,就形成了一个闭包。
  2. demo
function A(){
    function B(){
       console.log('Hello Closure!');
    }
    return B;
}
var C = A();
C();
  1. 作用
    在 Javascript 中,如果一个对象不再被引用,那么这个对象就会被 GC 回收,否则这个对象一直会保存在内存中。在上述例子中,B 定义在 A 中,因此 B 依赖于 A ,而外部变量 C 又引用了 B , 所以A间接的被 C 引用。也就是说,A 不会被 GC 回收,会一直保存在内存中。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值