• js知识点


    javascript

    01.JavaScript-闭包

    有权访问另一个函数作用域内变量的函数都是闭包

    var person = function(){
        var name = "default";
        return {
            getName:function(){
                return name;
            },
            setName:function(NewName){
                name = NewName;
            }
        }
    }();
    print(person.name); //undefined
    print(person.getName); //"default"
    person.setName("weizai");
    print(person.name); //"weizai"
    

    02.JavaScript-原型和原型链

    对于所有的对象,都有__proto__属性,这个属性对应该对象的原型.
    对于函数对象,除了__proto__属性之外,还有prototype属性,当一个函数被用作构造函数来创建实例时,该函数的prototype属性值将被作为原型赋值给所有对象实例(也就是设置实例的__proto__属性)
    1.原型对象
    js中 函数对象其中一个属性 原型对象prototype。p普通对象没有prototype属性 有__proto__ 。 原型的作用是给这个类的每一个对象都添加一个统一的方法。在原型中定义的方法和属性都是被所有对象实例共享

    var persion = function(name){
        this.name = name
    };
    person.prototype.getName = function(){
        //设置函数对象属性
        return this.name;
    }
    var zxj = new person('test');
    zxj.getName(); //zxj继承getName属性
    

    2.原型
    proto : js创建对象的内置属性 用于指向创建它的函数对象prototype
    (js内部使用寻找原型链的属性。实例化一个对象时,内部会创建一个__proto__属性并把prototype赋值给它)

    下图为原型链运行图解,当我们实例一个对象之后,调用它的内部方法,
    他的运行顺序是先找自身有没有该方法,如果没有就会通过__proto__属性想上层寻找,一直寻找到Object对象中,如果还没有才会报错null
    p.proto----->Persion.proto---->object.proto----->null

    03.JavaScript-作用域和作用域链

    1. 全局作用域(Global Scope)

    1.最外层函数和在最外层函数外面定义的变量拥有全局作用域

    var authorName="山边小溪";
    function doSomething(){
        var blogName="梦想天空";
        function innerSay(){
            alert(blogName);
        }
        innerSay();
    }
    alert(authorName); //山边小溪
    alert(blogName); //脚本错误
    doSomething(); //梦想天空
    innerSay() //脚本错误
    

    2.所有末定义直接赋值的变量自动声明为拥有全局作用域

    function doSomething(){
        var authorName="山边小溪";
        blogName="梦想天空";
        alert(authorName);
    }
    doSomething(); //山边小溪
    alert(blogName); //梦想天空
    alert(authorName); //脚本错误
    

    3.所有window对象的属性拥有全局作用域
    window.name、window.location、window.top

    1. 局部作用域(Local Scope) 
      和全局作用域相反,局部作用域一般只在固定的代码片段内可访问到,最常见的例如函数内部,所有在一些地方也会看到有人把这种作用域称为函数作用域,例如下列代码中的blogName和函数innerSay都只拥有局部作用域。
    function doSomething(){
        var blogName="梦想天空";
        function innerSay(){
            alert(blogName);
        }
        innerSay();
    }
    alert(blogName); //脚本错误
    innerSay(); //脚本错误
    

    在编写代码的时候应尽量少使用全局变量,尽可能使用局部变量。一个好的经验法则是:如果一个跨作用域的对象被引用了一次以上,则先把它存储到局部变量里再使用

    04.JavaScript-执行流与错误影响范围

    05.JavaScript-基础重点

    06.JavaScript-类型转换

    07.JavaScript-call-apply
    call 调用一个对象的一个方法,以另一个对象替换当前对象
    apply 应用某一对象的一个方法,用另一个对象替换当前对象。

    08.JavaScript-事件和事件委托

  • 相关阅读:
    java基础—GUI编程(一)
    java基础—数组
    java基础—异常处理
    java基础—面向对象
    多线程(二)
    多线程(一)
    ORACLE数据库SQL语句的执行过程
    Jetty直接调试,不用部署,不用弄一些杂七杂八的设置
    (2.1)servlet线程安全问题
    (3)tomcat源代码分析环境的搭建
  • 原文地址:https://www.cnblogs.com/weizaiyes/p/8193010.html
Copyright © 2020-2023  润新知