javaScript 笔记

来源:互联网 发布:岳阳开淘宝网店培训班 编辑:程序博客网 时间:2024/06/05 07:50

1、使用hasOwnProperty()方法可以检测对象独有的属性
2、delete 运算符可以用来删除对象的属性—> delete another_stooge.nickname
(删除该属性之后可以暴露出原型的nickname属性)
3、为应用只创建一个唯一的全局变量可以减少全局变量污染,还有一种方式是使用闭包进行信息隐藏。
4、函数是JavaScript的基础模块单元,用于代码复用、信息隐藏和组合调用。用于指定对象的行为。
5、对象字面量产生的对象连接到 Object.prototype、函数对象连接到Function.prototype(该原型对象本身连接到Object.prototype)。函数创建时会创建 –>上下文、实现函数行为的代码。
6、函数字面量:
保留字function:
函数名: 没有名字的函数成为匿名函数。
函数参数:在函数调用时初始化为实际提供的参数的值。
函数主体:在函数调用时执行。
var add = function(a, b){
return a + b;
}
var add = function f(a, b){
return a + b;
}
7、内部函数可以访问自己的参数和变量,同时也能自由的访问父函数的参数和变量。 通过函数字面量创建的函数对象包含一个连到外部上下文的链接–> 闭包

8、每个函数调用时接受的附加参数:this 、arguments。JavaScript函数调用模式:方法调用模式、函数调用模式、构造器调用模式、apply调用模式。这些函数调用模式在初始化this上存在差异。
9、方法调用模式:函数作为一个对象的属性进行调用时,this指向该对象。通过this可以取得它们所属对象对象的上下文的方法成为公共方法。

// 创建 myObject对象。它有一个value属性和一个 increment 方法。// increment 方法接受一个可选的参数。如果参数不是数字var myObject = {    value : 0,    increment : function(inc){        this.vaule += typeof  inc === 'number' ?  inc : 1;     }}myObject.increment();document.writeln(myObject.value);        //1myObject.increment(2);document.writeln(myObject.value);      //3

10、函数调用模式:函数作为一个非对象属性进行调用时,this指向全局对象。作为内部函数调用时也指向全局。。。
//给myObject增加一个double方法

myObject.double = function(){var that = this;     var helper = function(){         that.value = add(that.value ,that.value);    };    helper();   //以函数的形式调用 helper。};//以方法的形式调用 doublemyObject.double();document.writeln(myObject);        //6

11、构造器调用模式:如果在一个函数前面带上 new 来调用,那么背地里将会创建一个链接到该函数的 prototype 成员的新对象,同时 this 也会绑定到那个对象上。

一个函数,如果创建的目的就是希望结合 new 前缀来调用,那么他就被成为构造器函数。按照约定保存在以大写格式命名的变量里。

不推荐使用这种方式调用函数。

//创建一个名为Quo的构造器函数。它构造一个带有 status 属性的对象。var Que = function ( string ){this.status = string;}// 给Que 的所有实例提供一个名为 get_status 的公共方法。Que.prototype.get_status = function(){return this.status;}//构造一个 Quo 实例var myQuo = new Quo(“confused");document.writeln(myQuo.get_status());  //打印显示“confused”

12、apply调用模式:javaScript 提供了apply方法帮助我们构建一个参数组传递给调用函数。该方法允许我们选择 this 的值。apply方法接受两个参数,第一个参数是要绑定给 this 的值,第二个就是一个参数数组。

//构造一个包含两个数字的数组,并将他们相加。var array = [3 ,4];var sum = add.apply(null, array);//构造一个包含 status 成员的对象。var statusObject = {   status : "A-OK“}// statusObject 并没有继承自 Quo.prototype, 但我们可以在 statusObject 上调// 用 get_status 方法,尽管 statusObject 并没有一个名为 get_status 的方法。var status = Quo.prototype.get_status.apply(statusObject);// status 值为'A-OK'

14、 javaScript的 arguments 是一个”类似数组“的对象,它拥有一个 length 属性,但它没有任何数组的方法。

15、javascript函数总会返回一个值,如果没有指定值则返回 undefined,如果在函数调用时前面加上了 new 前缀,且返回值不是一个对象,则返回this(该新对象)。???

16、javascript 的异常的使用??

17、javascript 允许给语言的基本类型扩充功能:

   Object.prototype.method = function(){   }

上面的代码可以Object.prototype上添加方法,该方法对所有的对象都可用。这样的方式对函数、数组、字符串、数字、正则表达式同样适用。

  Function.prototype.method = function(name ,func){       this.prototype[name] = func;       return this;   }

通过给Function.prototype 增加一个 method 方法,我们下次给对象增加方法时可以不必键入prototype 这几个字符,省去一点麻烦。
String.method(‘trim’, function(){
return this.replace(/^\s+|\s+$/g,”);
}
给String 对象添加 trim 方法。

//符合条件时才增加方法Function.prototype.method = function()(name , func){    if(!this.prototype){       this.prototype[name] = func;        }return this;}

//modify on 2017/10/30

原创粉丝点击