new 操作符做了什么?
例: new person()
new绑定:如果是构造函数,this指向new出来的实例对象。
如果函数调用使用了new关键字,那么这个函数就是构造函数。
此时的作用简单来说就是:
开辟空间,创建对象,改变this指向,调用方法(new person)最后new返回了创造的对象。总结:new 在执行时会做四件事:
- 在内存中创建一个新对象;
- 让this指向这个新对象;
- 执行构造函数里面的代码,给这个新对象添加方法和属性。
- 返回这个对象(不要用return,不需要)
用书上的说:
- 创建一个空对象,并且this变量应用该对象,同时还继承了该函数的原型;
- 属性和方法被加入到this引用的对象中;
- 新创建的对象有this引用,并且最后隐试的返回this。
闭包是什么?特点是什么?
闭包是指有权利访问另一个函数作用域中变量的函数;
- 是一个函数
- 能访问另外一个函数作用域中的变量
function fn() { var a = 20 return function () { console.log(a) } }
让这个局部变量a像全局变量一样,不被垃圾回收机制所回收,一直在内存中,这是形式中的闭包(表面的理解).
特点:
- 闭包可以访问当前函数以外的变量;
- 即使外部函数已经返回,闭包仍能访问外部函数定义的变量。
- 闭包可以更新外部变量的值。
js中的原型和原型链?原型链的应用
每个对象都会在其内部初始化一个属性,就是prototype(原型)。当我们访问一个对象的属性时,如果这个对象内部不存在这个属性,那么他就会去prototype里找这个属性,这个prototype又会有自己的prototype,于是就这样一直找下去,也就是我们平时所说的原型链的概念
原型链的应用:
原型链是实现继承的主要方法
扩展:原型对象实现继承的代码:function Animal ( name, color,say){ this.name = name ; this.color = color ; this.say = function(){ console.log('喵喵喵') } } var cat = new Animal('cat','white'); // 如果给Animal的prototype属性上添加一个cry方法,那么实例对象cat将会也有cry方法 Animal.prototype.cry = function(){ console.log('呜呜呜') }