zoukankan      html  css  js  c++  java
  • js的语言的理解

    1.所谓字面量,就是语言语法

    2.在js编译器读到语法时候,执行时候创建对象;在赋值的时候创建一个对象,或者是一个匿名对象。

    3.函数定义本身是一个对象;执行时候不产生实例对象;这跟python类不一样,python的类的实例化的时候,类和实例分别都是对象。

    4.函数可以访问外围嵌套的空间,称为闭包,只要自己存在,外围的闭包就存在,跟python的函数嵌套的上下文类似;这有时候会导致内部函数比外部函数有更长的生命周期,内部函数的堆栈保存的上下文,可能保留外部函数初始化的变量;而外部函数此时可以已经被销毁。只是遗留下运行过后的痕迹。闭包的好处是,你的函数有了私有的变量,该变量不能被函数外的部分访问。

    5.new 执行什么动作? new ,将后面的函数调用即constructor,创建一个执行对象;这个执行的prototype 跟创建函数constructor 的prototype一样。进行完该过程后,左值为该对象;一般的函数会将结果赋给左值。

    new的过程

    var Person = function(){};
    var p = new Person();

    (1) var p={}; 也就是说,初始化一个对象p
    (2) p.__proto__ = Person.prototype;
    (3) Person.call(p); 也就是说构造p,也可以称之为初始化p

    6.对象 __proto__,prototype分别是什么?;prototype是函数的一个属性;__proto__是一个对象拥有的内置属性(请注意:prototype是函数的内置属性,__proto__是对象的内置属性),是JS内部使用寻找原型链的属性。

    7.js的中的数据循环,建议使用 for (var i = 0; i < items.length; i++){}, 原因如下:

    Array.prototype.copy = function () { };
    var arr = [1, 2];
    for (var index in arr)
    {
        alert(index);
    }

    我们看到会弹出三个对话框,分别是:0、1、copy,也就是说除了项的数值索引 0、1,还多了一个 copy,而这个 copy 就是因为 Array.prototype.copy 扩展得到的。另外,如果arr是空,使用上述循环居然也能进入循环体,但是index为undefined

    8.给input元素赋值:

      $('input').val('xxx'); 与 $('input').attr('value','xxx');是不一样的,前者会将内容显示到input框里面

    9.js中的var,inner2中引用变量a,每个函数实例引用的a都不同根据i来变化,而inner1中引用的a永远是最后一个实例的值。

    这是什么意思呢?就是第一例子 没有使用var来定义变量,则作用域为全局,而第二个函数中使用var定义变量,作用域为当前function中。

    function test1(i){
        a=i
        function inner1()
        {
        }
        return inner1
    }
    
    
    function test2(i){
        var  a=i
        function inner2()
        {
        }
        return inner2
    }

     10.jquery中使用了replace以后,如何定义replace完的html中元素的事件响应函数。

    $('.selector').click(function(){
      var obj = $(this),
          repl = $('<div class="size">whats up man ??! <span class="medium"></span></div>');
      obj.replaceWith(repl);
      alert(repl.find('span').attr('class')); //使用repl.find来进行元素定位,并且可以设置事件响应等。
    });
  • 相关阅读:
    javascript删除JSON元素
    State ,Getter , Mutation , Action , Module
    mutation和action区别
    图片懒加载
    git命令合并分支代码
    vue 项目生产环境下去重console
    rem px pt em (区别)
    npm 安装依赖 以及dependencies 和 devDependencies的区别
    仿百度搜索
    h5页面在移动端需要注意的一些事情
  • 原文地址:https://www.cnblogs.com/yasmi/p/5306367.html
Copyright © 2011-2022 走看看