ECMAScript要点总结

2015-10-21 晚上

1.调用call方法能够改变函数运行的作用域,例如:

function sayColor() {
    alert(this.color);
}
var color = 'window color';
var box = { color : 'box color' };
这时程序员直接调用sayColor则弹窗中值为window color,若是想在弹窗中提示对象中的color属性可以使用call方法:

sayColor.call(box); //box color

call中的参数代表sayColor函数执行的作用域:

sayColor.call(this); //window全局作用域
sayColor.call(window); //window全局作用域

因此,call被设计出来的目的是为了灵活改变函数执行的作用域。

2.定义对象可以用如下方式:

var myClass = {
    sName : 'XXX'
    sAge : 23
};

需要注意对象属性的声明语句后不能加分号!

3.编写函数时注意函数的形参列表中不能使用var关键字!

4.创建对象有两种方式推荐使用:

构造函数和原型的结合

function Car(sColor, iDoors, iMpg) {
    this.color = sColor;
    this.doors = iDoors;
    this.mpg = iMpg;
    this.drivers = new Array('Mike', 'John');
}
Car.prototype.showColor = function() {
    alert(this.color);
}
动态原型方法
function Car(sColor, iDoors, iMpg) {
    this.color = sColor;
    this.doors = iDoors;
    this.mpg = iMpg;
    this.drivers = new Array('Mike', 'John');
    if(typeof Car._initialized == 'undefined') {
        Car.prototype.showColor = function() {
            alert(this.color);
        }
        Car._initialized = true;
    }
}
对象实例化
var car = new Car('red', 4, 25);

2015-10-22 上午

5.转义字符用反斜杠\。

6.函数体中的arguments是对象,其属性length的值为参数个数,可以使用数组方式取得每个参数。

7.string类型不是对象,即不是引用类型,但是其包装类String是引用类型。

8.ECMAScript中为函数传递参数只有按值传递,而没有按引用传递。若传递一个引用类型,则传递的是该类型(对象)的地址,该方式是值传递。

9.值类型可以用typeof检测,引用类型既可以用typeof又可以用instanceof来检测具体的对象类型。

10.变量对象的概念。全局变量属于window对象的属性,局部变量也属于某个对象,此对象是由解析器处理的。

11.一个变量通过传参、var定义的方式都是函数的局部变量,否则是全局变量。

12.ECMAScript没有块级作用域,即{ ... }内不会形成一个内部作用域。

13.给不再使用的对象赋值为null可以解除引用,垃圾回收器会释放没有引用的内存空间,从而提高页面的性能。

2015-10-22 下午

14.ECMAScript中其实有两大内置对象:Global和Math,window对象是Global对象的一部分,Global对象不能显式调用,是一个抽象概念。

15.同为将字符串编码为utf-8,encodeURI不能识别特殊字符,encodeURIComponent能够识别,解码为decodeURI和decodeURIComponent。

16.如何取得一个范围内的随机数:

function select(start, end) {
    var total = end - start + 1;
    return Math.floor(Math.random()*total+start);
}
alert(select(6, 9));

17.在内置对象Math中,向上取整、向下取整和四舍五入取整函数分别为ceil、floor、round。

2015-10-22 晚上

18.ECMAScript中的对象都有原型属性prototype,实际是一个__proto__指针存储的。prototype中存储的属性和方法的使用与普通属性和方法一样,其在不同的对象中都相同,类似于Java中的静态属性和方法。

19.判断原型

xxx.prototype.isPrototypeOf(XXX); //判断对象xxx是否指向原型对象XXX
xxx.hasOwnProperty('xxxx'); //对象中是否有xxxx实例属性
xxxx in xxx; //xxxx是否是xxx的实例属性或原型属性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值