转载自: http://www.blackglory.me/javascript-magic-method-definegetter-definesetter/
在javascript的类中,可以用defineGetter和defineSetter_控制成员变量的Get和Set行为
例如,在一个图书类中,我们自动为Book加上书名符号:
function Book(name){
this.bookName=name;
this.getName=function(){
return "《"+this.bookName+"》";
}
this.setName=function(name){
this.bookName=name;
}
}
接下来我们只要规定使用者通过setName和getName方法对成员变量bookName操作就可以了.
但实际上还可以更方便:
function Book(name){
this.bookName=name;
this.getName=function(){
return "《"+this.bookName+"》";
}
this.setName=function(name){
this.bookName=name;
}
}
Book.prototype.__defineGetter__("name",function(){return "《"+this.bookName+"》";});
Book.prototype.__defineSetter__("name",function(name){this.bookName=name;});
这样,就可以直接通过Book对象的name属性来返回带有书名符号的字符串而又不影响成员变量本身了.
相关推荐
主要介绍了javascript中的__defineGetter__和__defineSetter__介绍,类似面向对象语言中的get和set关键字,需要的朋友可以参考下
关于__defineGetter__ 和__defineSetter__的说明
要理解JS中的prototype, 首先必须弄清楚以下几个概念 1. JS中所有的东西都是对象 2. JS中所有的东西都由Object衍生而来, 即... // propertyIsEnumerable, __defineGetter__, __lookupGetter__, __defineSetter__,
Mozilla中独有的读写器(defineGetter、defineSetter)以及可以给Element,Event等加上prototype原型,使得在IE里用的方法同样在Mozilla中可以适用,下面贴出常用的一些代码 例如 obj.insertAdjacentHTML, ...
[removed] [removed] = function(){ <PRE class=javascript name=”code”>if(window.navigator.userAgent.toLowerCase().indexOf(“msie”)==0){ //firefox innerText HTMLElement.prototype.__defineGetter__( ...
defineGetter / defineSetter ) 看: 如何使用: 步骤 1. 安装 npm install webpack2-polyfill-plugin --save 步骤 2. 在你的 webpack 配置中使用插件 var Webpack2Polyfill = require ( "webpack2-polyfill-plugin...
这一段使得FireFox也支持IE的innerText方法 代码如下: function isIE(){ if (window.navigator.userAgent.toLowerCase().indexOf(“msie”)>=1) return true; else return false; } if(!isIE()){ //firefox ...
语言:Deutsch,English 为Chrome提供隐私 Privacy Extension使您可以控制浏览器...*在Chrome 43中不再起作用,现在使用__defineGetter__)-添加了选项以防止将window.name属性用作任何cookie的向量(如注释)-如果隐藏
*在Chrome 43中不再起作用,现在使用__defineGetter__)-添加了选项以防止将window.name属性用作任何cookie的向量(如注释)-如果隐藏了用户代理,则将X-Client-Data添加到阻止的标头列表中 支持语言:Deutsch,...
全键 获取对象的所有属性键,包括不可枚举和继承的 像一样,但是遍历原型链。 安装 $ npm install all-keys 用法 import allKeys from 'all-keys' ; Object . getOwnPropertyNames ... '__defineGetter__', '__lookupG
是在CSDN论坛看到的一个问题,平常我也没有...我尝试着用__defineGetter__的方法在Mozilla下得到所有的innerHTML,在这里却给了我一些提示。比如: 改动两个文本框里的值,把这个容器的innerHTML赋值给d2 foo()