• js基础知识:闭包,事件处理,原型


    闭包:其实就是js代码在执行的时候会创建变量对象的一个作用域链,标识符解析的时候会沿着作用域链一级一级的网上搜索,最后到达全局变量停止。所以某个函数可以访问外层的局部变量和全局变量,但是访问不了里层的变量

    with和catch语句都会在作用域的前端添加一个变量对象

            function buildUrl(){
                var qs = "?debug=true"
    
                with(location){
                    var url = href + qs ;
                }
    
                return url
            }

    如果一个函数对象要访问内层函数中的变量的话,就用return就行了

    事件处理:事件先捕获然后再冒泡,从document开始在document结束,addEventListener中第三个参数为true时,在捕获阶段处理事件,为false是在冒泡阶段处理事件,默认为false

    ie有自己的attachEvent方法,与addEventListener不同的是,事件名中多了‘on’,而且没有第三个参数,只支持冒泡

    原型:

            function Person(name) {
                 this.name = name;
            }
            var person1 = new Person('Mick');

    每一个创建的函数都有原型属性,它是一个指针,指向函数的原型对象。

    每个函数的实例都有一个构造函数的指针,指向原函数对象

     console.log(person1.constructor == Person); //true

    原型对象其实也相当于一个实例,所以他的构造函数也指向原函数对象

    console.log(person1.constructor==Person.prototype.constructor)//true

    每个对象都有 __proto__ 属性,但只有函数对象才有 prototype 属性

    继承就是让sub的原型指向另一个函数对象(super的实例),从而而这个原型对象的constructor属性指向的是函数对象super

    原型对象本来就是可以让实例对象共享其中的方法,所以,这个时候sub就可以访问到super实例和super的原型对象中的方法了

            function Super() {
                 this.sayHi = ()=>{
                     alert('hi')
                 }
            }
            function Sub(){
                this.say = ()=>{
                    alert('im sub')
                }
            }
            Sub.prototype = new Super()
            var sub1 = new Sub() ;
            console.log(sub1.__proto__.constructor==Super)//true
         console.log(sub1.__proto__.__proto__==Super.prototype)//true
  • 相关阅读:
    hdu 4825 Xor Sum (01 Trie)
    hdu 5877 Weak Pair (Treap)
    bzoj 1861: [Zjoi2006]Book 书架 (splay)
    bzoj 1503: [NOI2004]郁闷的出纳员 (splay)
    hihocoder#1333 : 平衡树·Splay2 (区间操作)
    「BZOJ1251」序列终结者 (splay 区间操作)
    二进制运算符的相关运算
    Bzoj 1085: [SCOI2005]骑士精神 (dfs)
    Bzoj 1083: [SCOI2005]繁忙的都市 (最小生成树)
    Bzoj 1088: [SCOI2005]扫雷Mine (DP)
  • 原文地址:https://www.cnblogs.com/maskmtj/p/9397761.html
Copyright © 2020-2023  润新知