继承、闭包、cookie和session

xiaoxiao2021-02-28  63

一、对象、prototype属性、继承 1、创建了一个新的对象之后,就会创建一个prototype属性 2、这个属性指向函数的原型对象 3、对象会自动获得一个constructor属性 4、Constructor 5、原型模式:每个函数都有一个prototype属性 6、原型链:利用原型让一个引用类型继承另一个类型的属性和方法。是实现继承的主要方法。在子级中实例化父级的对象(SubType.prototype = new SuperType())。 a)缺点:所有的实例都共享父级的属性,修改其中一个就会修改全部 b)在创建子对象实例的时候,不能像超类型构造函数传递参数。 7、继承:很少会单独使用原型链。于是出现了一下几类: a)借用构造函数(有时候也叫伪造对象或者经典继承):在子类构造函数的内部调用超类型的构造函数。 b)组合继承(也叫伪经典继承、最常用的继承方式):将原型链和借用构造函数技术组合到一块。使用原型链实现对原型属性和方法的继承;而通过借用构造函数实现对实例属性的继承。 优点:结合原型链和借用构造函数的优势:1、借用构造函数中传入了参数,所以构造的是不同的超类型对象,在子对象中互不影响。2、原型链,可以使用超类型的属性和方法。 c)原型式继承 d)寄生式继承 e)寄生组合式继承 二、作用域链 在创建函数时,会创建一个预先包含全局变量的作用域链,这个作用域链被保存在内部的scope属性中;当调用函数时,会为函数创建一个执行环境,然后通过复制函数的scope属性中对象构建起执行环境的作用域链。此后,活动对象被创建并被推入执行环境作用域链的前端。于是作用域链中包含两个变量对象:本地活动对象和全局变量对象。 三、闭包 有权访问另一个函数作用域中的变量的函数。创建闭包的常见方式:在一个函数内部创建另一个函数。在外部函数执行完毕后,其活动对象不会被销毁,因为匿名函数的作用域链仍在引用这个活动对象。也就是说:外部函数作用域链会被销毁,但它的活动对象不会被销毁,直到内部函数被销毁后,外部函数的活动对象才会被销毁。 注意的问题: 1、闭包与变量。(for var i=0;i<length;i++)这个再包含一层内部函数的时候,内部访问i只会访问到最后一个i,这个经典的地方可以用闭包来解释。 2、This对象。内部函数的this问题,内部函数用到this、arguments时,只会搜索到活动对象为止,因此永远不可能直接访问外部函数的这两个变量。不过,把外部作用域中的this对象保存在一个闭包可以访问到的变量中,就可以让闭包访问对象了。 var name = ‘the windows’; Var object = { name:”my object”, getNameFunc:function(){ Return function(){this.name} } } Alert(object.getNameFunc()()) //the windows var name = ‘the windows’; Var object = { name:”my object”, getNameFunc:function(){ Var that = this; Return function(){that.name} } } Alert(object.getNameFunc()()) //my object 四、cookie和session 并不是所有的网页请求都会有cookie和session,对于用户来说,只有与用户个人信息相关的才会有cookie和session来存储数据。访问其他的公共资源不需要cookie和session的。
转载请注明原文地址: https://www.6miu.com/read-46449.html

最新回复(0)