FUNCTION
V8 中还提供了 .bind 用来改变this的引用:
function a() {
return this.hello == 'hello';
}
var b = a.bind({ hello: 'hello' });
b(); //=>true
V8 中还支持到非标准的函数属性命名,并可以使用 .name 来获取命名:
var a = function b() {}
a.name; //=>b
该属性用于 V8 内部的堆栈追踪。当有错误抛出时,V8 会显示一个堆栈信息,并会告诉你是那个函数出错了。因此,为函数命名有助于调试,所以推荐。
__PROTO__(继承)
__proto__ 使得定义继承链更容易:
function Animal() {}
Animal.prototype.dsd = function(e) {
return e;
}
function Dog() {}
// 使用__proto__实现继承
Dog.prototype.__proto__ = Animal.prototype;
var dog = new Dog();
dog.dsd(110); //=>110
存取器
可以通过 __defineSetter__ 来设置属性, __defineGetter__ 访问属性。
下面这个例子,为所有的 String 对象添加了 student 获取器,它会执行设定好的逻辑,简单的访问该属性就会调用事先设定好的函数,无需显性调用:
String.prototype.__defineGetter__('student', function() {
return '今天是' + this + '值日';
})
var a = new String('小明');
a.student; //=>今天是小明值日