__defineGetter__ && __defineSetter__

看别人源码碰到的,做个备忘。

//针对对象增加get\set方法,返回绑定函数的返回值
Date.prototype.__defineGetter__(‘getYear‘, function() {return this.getFullYear();});
Date.prototype.__defineSetter__(‘setYear‘, function(year) {this.setFullYear(year)});
Date.prototype.__defineGetter__(‘sayHello‘, function() {return "Hello"}); 

var now = new Date;
console.log(now.getYear); //2015
now.setYear  = 2011;
console.log(now.getYear); //2006

console.log(now.sayHello);
时间: 2024-10-19 00:25:58

__defineGetter__ && __defineSetter__的相关文章

Javascript中prototype属性的详解

原文链接:http://www.cnblogs.com/Uncle-Keith/p/5834289.html 在典型的面向对象的语言中,如java,都存在类(class)的概念,类就是对象的模板,对象就是类的实例.但是在Javascript语言体系中,是不存在类(Class)的概念的,javascript中不是基于‘类的’,而是通过构造函数(constructor)和原型链(prototype chains)实现的.但是在ES6中提供了更接近传统语言的写法,引入了Class(类)这个概念,作为对

[Node.js]REPL(交互式解释器)

摘要 REPL(Read Eval Print Loop:交互式解释器) 表示一个电脑的环境,类似 Window 系统的终端或 Unix/Linux shell,我们可以在终端中输入命令,并接收系统的响应. Node交互解释器 node自带的交互解释器可以完成以下任务: 读取:读取用户输入,解析输了js数据结构并存储在内存中. 执行:执行输入的数据结构. 打印:输出结果. 循环:循环操作以上步骤知道用户两次按下ctrl+c按钮退出. windows启动node交互解析器 如上图,在> 后面就可以

JavaScript的原型系统是怎样构建起来的

和传统的面向对象语言通过类实现继承的方式不同,JavaScript中不存在传统意义的"类",JavaScript是通过构造函数来实现继承的.JavaScript的构造函数常常被混淆为"类",只是因为它们承担着同样的功能,然而它们实现继承的方式完全不同.类继承通过生成一个类的副本实现继承,构造函数通过原型关联实现继承.类继承的机制是"复制.拷贝",原型继承的机制是"引用.关联". 一.原型是什么 JavaScript中所有的对象

菜鸟学习cordova-android的js源码(2)

刚刚数了一下,cordova.js中定义了17个模块,下面慢慢来看这17个模块. 先看比较独立的模块,一些工具模块. 1. cordova/urlutil 模块输出的对象包含一个方法makeAbsolute,把地址转化为绝对地址. //markdefine("cordova/urlutil", function(require, exports, module) { exports.makeAbsolute = function makeAbsolute(url) { var anch

Object.create()和new object()和{}的区别

Object.create()介绍Object.create(null) 创建的对象是一个空对象,在该对象上没有继承 Object.prototype 原型链上的属性或者方法,例如:toString(), hasOwnProperty()等方法 Object.create()方法接受两个参数:Object.create(obj,propertiesObject) ; obj:一个对象,应该是新创建的对象的原型. propertiesObject:可选.该参数对象是一组属性与值,该对象的属性名称将

浅谈JavaScript的Object类型

<JavaScript高级程序设计>第三版 P35 认识对象 书上一句话总结了对象:对象就是一组数据和功能的集合.(听着很简单!但是,这个集合到底是什么,该怎么用...一脸懵逼) 在ES中,Object类型是所有它的实例的基础.也就是Object类型所具有的的任何属性和方法也同样存在更具体的对象中. var obj = new Object(); obj.name = 'zs'; obj.sayHi = function () { console.log('Hi'); } console.lo

prototype和__proto__的关系是什么?

我们创建的每个函数都有一个prototype(原型)属性,这个属性是一个对象,它的用途是包含可以由特定类型的所有实例共享的属性和方法.(这个对象下面有个属性,这个属性是另外一个对象的应用 ,这个属性就是一个对象.) -  prototype 是显式原型,它是指向函数的原型对象.(函数创建之后就会产生prototype属性) funcition这个特殊的对象,除了和其他对象一样有_proto_属性之外,还有自己特有的属性——原型属性(prototype),这个属性是一个指针,指向一个对象,这个对象

__defineGetter__,__defineSetter__和Object.defineProperty

// __defineGetter__ at the least works in more browsers // http://robertnyman.com/javascript/javascript-getters-setters.html // Object.defineProperty only works in Chrome //用法 String.prototype.__defineGetter__ = ('name',function(){ return nnn}); Stri

关于__defineGetter__ 和__defineSetter__的说明

Getter是一种获取一个属性的值的方法,Setter是一种设置一个属性的值的方法.可以为任何预定义的核心对象或用户自定义对象定义getter和setter方法,从而为现有的对象添加新的属性. 有两种方法来定义Getter或Setter方法: 在对象初始化时定义  在对象定义后通过Object的__defineGetter__.__defineSetter__方法来追加定义  在使用对象初始化过程来定义Getter和Setter方法时唯一要做的事情就是在getter方法前面加上“get”,在se