JavaScript复习继续

  • ng-class是用于给元素绑定样式;用法:

  1. <div ng-class="{'A':isA,'B':isB,'C':isC}"></div> 
  2. <div   ng-class = "{{A}}" > </ div >  
  • ng-if  指令用于在表达式为 false 时移除 HTML 元素。如果 if 语句执行的结果为 true,会添加移除元素,并显示。ng-if  指令不同于 ng-hide, ng-hide 隐藏元素,而  ng-if  是从 DOM 中移除元素。
  • ng-app  指令用于告诉 AngularJS 应用当前这个元素是根元素。所有 AngularJS 应用都必须要要一个根元素。HTML 文档中只允许有一个 ng-app 指令,如果有多个 ng-app 指令,则只有第一个会被使用。
  • ng-if  指令用于在表达式为 false 时移除 HTML 元素。如果 if 语句执行的结果为 true,会添加移除元素,并显示。ng-if  指令不同于 ng-hide, ng-hide 隐藏元素,而  ng-if  是从 DOM 中移除元素。
  • ng-click给元素绑定监听
  • ng-show显示 ng-hide隐藏 
  • 数组本身就是一个对象;可以对数据进行一种存储;arr.length,对arr对象的length属性进行一个访问

  • 在标准的 JavaScript 中, Ajax 异步执行调用基于Event和callback来实现;JavaScript处理异步都是以callback的方式,在前端开发领域callback机制几乎深入人心;
  • 所谓Promise,字面上可以理解为“承诺”,就是说A调用B,B返回一个“承诺”给A,然后A就可以在写计划的时候这么写:当B返回结果给我的时候,A执行方案S1,反之如果B因为什么原因没有给到A想要的结果,那么A执行应急方案S2,这样一来,所有的潜在风险都在A的可控范围之内了。
var resB = B();
var runA = function() {
    resB.then(execS1, execS2);
};
runA();
  • 下面三个事件都是事件对象的方法:
  • stopPropagation() 阻止事件冒泡。 这个事件不会阻止定义在元素上的其他事件。

  • stopImmediatePropagation() 会彻底的阻止事件, 在其之后的绑定在元素上的其他监听事件都不会触发

  • preventDefault() 阻止事件的默认动作

  • js没有选项中的其他事件
  • setTimeout的方式(注册事件):有两个参数,第一个参数是函数,第二参数是时间值。调用setTimeout时,把函数参数,放到事件队列中。等主程序运行完,再调用
  • hasOwnProperty: 是用来判断一个对象是否有你给出名称的属性或对象。不过需要注意的是,此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本身的一个成员。

    isPrototypeOf : 是用来判断要检查其原型链的对象是否存在于指定对象实例中,是则返回true,否则返回false。

  • 使用object.defineProperty可向对象添加或者修改属性
  • 原型链是JS实现继承的一种模型
  • For循环是按顺序的,for in 循环是不一定按顺序的
  • 在原型上扩展的可枚举方法,会被for in循环出来

this指的就是windows

 

  • console.log(1+ +"2"+"2");

    第一个+"2"中的加号是一元加操作符,+"2"会变成数值2,因此1+ +"2"相当于1+2=3.
    然后和后面的字符串“2”相合并,变成了字符串"32".
  • console.log("A""B"+"2");

    "A"-"B"的运算中,需要先把"A"和"B"用Number函数转换为数值,其结果为NaN,在剪发操作中,如果有一个是NaN,则结果是NaN,因此"A"-"B"结果为NaN。
    然后和"2"进行字符串合并,变成了NaN2
  • console.log("A""B"+2);

    根据上题所述,"A"-"B"结果为NaN,然后和数值2进行加法操作,在加法操作中,如果有一个操作数是NaN,则结果为NaN
  • 一元加操作符以一个加号(+)表示,放在数值前面,对数值不会产生任何影响, 
    var num=25;
    num=+num;
    console.log(num);/25

    在对非数值应用一元加操作符时,该操作符会像 Number()转型函数一样对这个值执行转换。 换句话说,布尔值 false 和 true 将被转换为 0和 1,字符串值会被按照一组特殊的规则进行解析,而 对象是先调用它们的 valueOf()和(或)toString()方法,再转换得到的值.

var S1 = "01";
var S2 = "1.1";
var S3 = "z";
var b = false;
var f = 1.1;
var o = { valueOf: function () { return -1; } };
S1=+S1;
S2=+S2;
S3=+S3;
b=+b;
f=+f;
o=+o;
console.log(S1);//1
console.log(S2);//1.1
console.log(S3);//NAN
console.log(b);//0
console.log(f);//1.1
console.log(o);//-1

 

  • .ajax() 方法通过 HTTP 请求加载远程数据。$.ajax(opts);opts为json格式,常见参数url、type、data等
  • load() 方法从服务器加载数据,并把返回的数据放入被选元素中。$(selector).load(URL,data,callback);

    必需的 URL 参数规定您希望加载的 URL。

    可选的 data 参数规定与请求一同发送的查询字符串键/值对集合。

    可选的 callback 参数是 load() 方法完成后所执行的函数名称。

  • $.get() 方法通过 HTTP GET 请求从服务器上请求数据。

    $.get(URL,callback);

    必需的 URL 参数规定您希望请求的 URL。

    可选的 callback 参数是请求成功后所执行的函数名。

  • getScript() 方法通过 HTTP GET 请求载入并执行 JavaScript 文件。

    jQuery.getScript(url,success(response,status));

  • pop()方法用于删除数组的最后一个元素,并返回被删除的最后一个元素,这样的话数组就被改变了。

    splice()方法可以对数组中已经存在元素进行删除,也可以添加元素到数组中。

    sort()方法对数组中所有的元素都进行排序,如果没有提供比较函数compareFunction,则按照字符串的Unicode码的顺序进行排序。

    所以以上三种方法都改变了数组。

    而  concat()方法用于连接两个或多个数组。该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本,返回一个新的数组。该数组是通过把所有的arrayX参数添加到arryaObject中生成的,如果要进行 concat()操作的参数是数组,那么添加的是数组中的元素,而不是数组。

  • $emit() 是向上冒泡

    $broadcast() 是向下传播事件 需给子scope发送消息,需使用

  • var f = function g() {
        return 23;
    };
    // console.log(typeof g());报错
    console.log(typeof f);//function

    在 JS 里,声明函数只有 2 种方法:
    第 1 种: function foo(){...} (函数声明)
    第 2 种: var foo = function(){...} (等号后面必须是匿名函数,这句实质是函数表达式)

  • 一个promise可能有三种状态:等待(pending)、已完成(fulfilled)、已拒绝(rejected)
  • 一个promise的状态只可能从“等待”转到“完成”态或者“拒绝”态,不能逆向转换,同时“完成”态和“拒绝”态不能相互转换
  • promise必须实现then方法(可以说,then就是promise的核心),而且then必须返回一个promise,同一个promise的then可以调用多次,并且回调的执行顺序跟它们被定义时的顺序一致
  • then方法接受两个参数,第一个参数是成功时的回调,在promise由“等待”态转换到“完成”态时调用,另一个是失败时的回调,在promise由“等待”态转换到“拒绝”态时调用。同时,then可以接受另一个promise传入,也接受一个“类then”的对象或方法,即thenable对象。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章