javascript属性之get/set
var o = {
get x(){
return 7;
},
set x(val){
console.info("不能设置x的值");
}
}
o.x //7 读取x值的时候,会使用get方法
o.x = 9 //不能设置x的值 赋值x时,会使用set方法
get/set与原型链
//不包含get/set的原型
function p(){}
p.prototype.z = 9;
var p1 = new p();
p1.z //9 //对象上没有属性,将在原型链上查找
p1.z = 10; //原型上不包含get/set方法时,向原型上的同名属性赋值,会在对象上添加此属性
p1.z //10 //对象上能够找到属性,将不会在原型链上查找
//原型上包含get/set方法
function person(){}
Object.defineProperty(person.prototype,'z',{get:function(){return 1}});
var p = new person();
p.z //
p.z = 89;
p.z //still 1 原型链上get/set方法,操作此属性的时候,会向上查找原型链。 所以p.z仍旧是1
//那个问题来了,在原型链上有get/set方法的时候,怎么实现在对象上添加此属性呢?
function foo(){}
Object.defineProperty(foo.prototype,'z',{get:function(){return 1}})
var f = new foo();
f.z //
f.z = 2;
f.z //still 1
Object.defineProperty(f,'z',{value:100,configurable:true,writable:true});
f.hasOwnProperty('z') //true
f.z //
f.z = 90;
f.z //90
delete f.z //true
f.hasOwnProperty('z') //false
f.z //1 回到原型链查找
javascript属性之get/set的更多相关文章
- (02)javascript属性
私有属性(私有变量和私有方法) 实例属性(实例变量和实例方法) 静态属性(静态变量和静态方法) <!DOCTYPE html> <html lang="en"&g ...
- JavaScript 属性类型(数据属性 访问器属性)
ECMA-2把对象定义为:“无序属性的集合,其属性可以包含基本值.对象或者函数.” 严格来说,这就相当于说对象是一组没有特定顺序的值.对象的属性或方法都有一个名字,而每个名字映射到一个值.我们可以把E ...
- JavaScript 属性类型(数据属性和访问器属性)
数据属性 数据属性包含一个数据值的位置.在这个位置可以读取和写入值.数据属性有 4 个描述其行为的特性. [[Configurable]]:表示能否通过 delete 删除属性从而重新定义属性,能否修 ...
- gvim如何显示html属性代码提示? vim 如何显示 javascript属性及方法提示?
gvim如何显示html属性代码 可以在vim中 显示 html, css, js等的属性/方法 提示: 一是: 在 ~/.vim/after/syntax/ 目录中 安装 css-color.vim ...
- JavaScript ---属性
获取属性 可以通过点(.)或方挂号([])运算符来获取属性的值. 对于点(.)来说,右侧必须是一个以属性名称命名的简单标识符.对于[]来说,方挂号内必须是一个计算结果为字符串的表达式. var aut ...
- 您是不是奇怪为什么 <script> 标签中没有 type="text/javascript" 属性?
在 HTML5 中该属性不是必需的.JavaScript 是 HTML5 以及所有现代浏览器中的默认脚本语言!
- Javascript属性constructor/prototype的底层原理
在Javascript语言中,constructor属性是专门为function而设计的,它存在于每个function的prototype属性中. 这个constructor保存了指向function ...
- JavaScript 属性描述符
属性描述符(Property Descriptor)是 ES5 之后出现的概念,顾名思义,它用于描述属性应该是什么样,例如是否只读,能否枚举,能否可配置等.所有对象属性均可使用属性描述符来定义. 属性 ...
- javascript 属性的特性
/* 属性的特性: 可以通过调用Object.getOwnPropertyDescriptor()可以获得某个对象特定属性的属性描述符, 从函数名字就可以看出, Object.getOwnProper ...
- JavaScript属性中的offsetLeft、offsetWidth、clientWidth、scrollLeft、scrollWidth、innerWidth
1.offsetLeft和offsetTop 只读属性,返回当前元素与父辈元素之间的距离(不包括边框).其中父辈元素的取法是有门道的: (1).若父辈元素中有定位的元素,那么就返回距离当前元素最近的定 ...
随机推荐
- eclipse从git拉去出现红色方块的解决办法
1:由于错误已经解决,这里借了一副图,主要是显示这个红色方块,然后贴一下解决方法,日后好脑补: 大家一看肯定都是冲突了,我也是第一次遇到这种错误,贴一下(鼠标右击项目找到如下的Reset): 然后红色 ...
- 使用ajax调用webservice加载table
写了个ajax调用webservice动态加载表格的案例 不废话直接上代码 webservice代码: /// <summary> /// 首页显示会员信息 /// </summar ...
- CSS(四)float 定位
一.文档流 网页默认的定位方式 1.行级元素: 从左到右 2.块级元素: 从上到下 文档流的流动方式 从右下 到 左上 ↖ 二.浮动 1.浮动的定义 , 是元素脱离文档流 遇到父级边界 或相邻浮动 ...
- web页面接入QQ客服的方法
在做微信二次开发的时候或者手机版网页的时候有人想在接qq客服,下面我就分享一下具体操作: 1,准备一个QQ号,可以是企业QQ,也可以是个人QQ.登录网址:http://shang.qq.com/wid ...
- better-scroll不能滚动之 滚动监听-左右联动
滚动监听 better-scroll 无法滚动的分析,直接翻到最后,看问题汇总,希望能帮助你解决. 借用一下人家这个好看的项目图片,做一个解释.左边的内容会跟右边的内容一起关联,点击左边的菜单,右边会 ...
- 关于js中的json对象,json串,数组之间相互转换
将json对象转换成string var loginUser = {username: username, password: password}//方式一 localStorage.setItem( ...
- Two Sum(两个数的相加)
2017.11.10题目描述:Given nums = [2, 7, 11, 15], target = 9, Because nums[0] + nums[1] = 2 + 7 = 9, retur ...
- 软件161A 张慧敏
一.PTA实验作业 题目1:7-11 单向链表3:编程实现:输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:输入一个正整数 n(0<n< ...
- CSS 换行问题white-space属性 window对象和global对象
white-space: nowrap禁止换行 1.word-wrap:break-word; 内容将在边界内换行,仅用于块对象,内联对象要用的话,必须要设定height.width或display: ...
- hdu 5919--Sequence II(主席树--求区间不同数个数+区间第k大)
题目链接 Problem Description Mr. Frog has an integer sequence of length n, which can be denoted as a1,a2 ...