JavaScript中关联原型链属性特性


Posted in Javascript onFebruary 13, 2016

数据属性:

数据属性包含一个数据值的位置,在这个位置可以读取和写入值。

4个描述的行为特性:

writable 表示能否修改属性的值。默认为true

Enumerable 表示能否过过for in循环返回属性是否可以枚举。

configuralbe 表示是否能过来delete删除属性从来重新定义属性,能否修改其配置。

value 包含这个属性的数据值。读取属性值的时候,从这个位置读取。

写入属性值的时候,把新值保存在这个位置。这个特性的默认值为true。

<script>
function Foo(){}
Foo.prototype.z = 
var obj = new Foo()
obj.x = 
alert("x" in obj) //=>true x是obj对象的自有属性
alert("z" in obj) //=>true z是obj原型上继承来看属性
//hasOwnProperty 必须是对象上的自有的属性才返回true
alert(obj.hasOwnProperty("x")) //true x是obj对象上的自有属性
alert(obj.hasOwnProperty("z")) //false z是obj原型上继承来的属性,不是他的私有属性
alert(Foo.prototype.hasOwnProperty("z")) //=>true z是原型上自有的属性,所以返回true
alert(Object.prototype.hasOwnProperty("toString"))//=>toString 是顶级对象上的自有属性,所以返回true
//prpertyisEnumeralbe 的意思是必是对象上的自有属性而且要以是枚举的,但是对象的可枚举属性Enumeralbe是true,才能返回true
alert(obj.propertyIsEnumerable("x")) //true x是obj对象上可枚举的属性
alert(obj.propertyIsEnumerable("z")) //false z是obj原型上的属性,不是自有属性,则不可以枚举
alert(Foo.prototype.propertyIsEnumerable("z")) //true x是原型上的自有属性,所以可以枚举
</script>

如何枚举属性,枚举属性对于原型又有什么区别?

演示代码如下:

<script>
function Foo(){}
Foo.prototype.age = 
var obj = new Foo()
obj.name = "ziksang"
obj.addr = "上海"
obj.telephone = 
for(var p in obj){ //使用FOR IN 可以枚举出自身的属性和原型上的属性
console.log(p)
}
console.log(Object.keys(obj)) //使用Object.keys(obj)只可以枚举Obj对象上自身的属性
console.log(Object.getOwnPropertyNames(obj)) //Object.getOwnPropertyNames(obj)是列出Ojb对象上自身的属性名,与枚举不相关,但是又类似枚举,大家要注意区分
</script>

以上内容是小编给大家介绍的JavaScript中关联原型链属性特性的相关知识,希望对大家有所帮助。

Javascript 相关文章推荐
js切换div css注意的细节
Dec 10 Javascript
JavaScript全排列的六种算法 具体实现
Jun 29 Javascript
js下拉菜单语言选项简单实现
Sep 23 Javascript
js中window.open()的所有参数详细解析
Jan 09 Javascript
node.js中的fs.symlink方法使用说明
Dec 15 Javascript
详解Angular开发中的登陆与身份验证
Jul 27 Javascript
实现隔行换色效果的两种方式【实用】
Nov 27 Javascript
详解vue.js之绑定class和style的示例代码
Aug 24 Javascript
Vue中正确使用jQuery的方法
Oct 30 jQuery
Node.js调用fs.renameSync报错(Error: EXDEV, cross-device link not permitted)
Dec 27 Javascript
vuex state及mapState的基础用法详解
Apr 19 Javascript
解决angular2 获取到的数据无法实时更新的问题
Aug 31 Javascript
JavaScript操作class和style样式代码详解
Feb 13 #Javascript
javascript实现查找数组中最大值方法汇总
Feb 13 #Javascript
JavaScript常用数组算法小结
Feb 13 #Javascript
Javascript 字符串模板的简单实现
Feb 13 #Javascript
javascript基础知识分享之类与函数化
Feb 13 #Javascript
JavaScript正则表达式的分组匹配详解
Feb 13 #Javascript
js HTML5 Ajax实现文件上传进度条功能
Feb 13 #Javascript
You might like
精通php的十大要点(上)
2009/02/04 PHP
php学习笔记之 函数声明
2011/06/09 PHP
解析用PHP读写音频文件信息的详解(支持WMA和MP3)
2013/05/10 PHP
PHP+MySQL统计该库中每个表的记录数并按递减顺序排列的方法
2016/02/15 PHP
CodeIgniter 完美解决URL含有中文字符串
2016/05/13 PHP
php使用goto实现自动重启swoole、reactphp、workerman服务的代码
2020/04/13 PHP
特殊字符、常规符号及其代码对照表
2006/06/26 Javascript
JavaScript 创建对象
2009/07/17 Javascript
理解JavaScript中的对象 推荐
2011/01/09 Javascript
jquery的ajax()函数传值中文乱码解决方法介绍
2012/11/08 Javascript
常见表单重复提交问题整理及解决方法
2013/11/13 Javascript
javascript实现控制文字大中小显示
2015/04/28 Javascript
jQuery自定义滚动条完整实例
2016/01/08 Javascript
js鼠标移动时禁止选中文字
2017/02/19 Javascript
jQuery Plupload上传插件的使用
2017/04/19 jQuery
NodeJS爬虫实例之糗事百科
2017/12/14 NodeJs
javascript回调函数详解
2018/02/06 Javascript
Vue实现双向绑定的原理以及响应式数据的方法
2018/07/02 Javascript
Vue Elenent实现表格相同数据列合并
2020/11/30 Vue.js
[01:03]PWL开团时刻DAY6——别打我
2020/11/05 DOTA
python实现自动登录人人网并采集信息的方法
2015/06/28 Python
Pycharm学习教程(1) 定制外观
2017/05/02 Python
Python原始字符串与Unicode字符串操作符用法实例分析
2017/07/22 Python
深入浅析Python的类
2018/06/22 Python
Django使用Channels实现WebSocket的方法
2019/07/28 Python
django 控制页面跳转的例子
2019/08/06 Python
HTML5不支持frameset的两种解决方法
2016/11/14 HTML / CSS
Hunter Boots美国官方网站:赫特威灵顿雨靴
2018/06/16 全球购物
校园招聘策划书
2014/01/09 职场文书
便利店投资的创业计划书
2014/01/12 职场文书
投资协议书范本
2014/04/21 职场文书
医德医魂心得体会
2014/09/11 职场文书
zabbix agent2 监控oracle数据库的方法
2021/05/13 Oracle
详解SpringBoot异常处理流程及原理
2021/06/21 Java/Android
使用python创建股票的时间序列可视化分析
2022/03/03 Python
nginx容器方式反向代理实战
2022/04/18 Servers