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 相关文章推荐
Array.slice()与Array.splice()的返回值类型
Oct 09 Javascript
wordpress之js库集合研究介绍
Aug 17 Javascript
基于jquery的文本框与autocomplete结合使用(asp.net+json)
May 30 Javascript
JS,Jquery获取select,dropdownlist,checkbox下拉列表框的值(示例代码)
Jan 11 Javascript
javascript生成随机大小写字母的方法
Feb 20 Javascript
jQuery分别获取选中的复选框值的示例
Jun 17 Javascript
js制作带有遮罩弹出层实现登录注册表单特效代码分享
Sep 05 Javascript
全面解析Bootstrap手风琴效果
Apr 17 Javascript
ES6新特性之Symbol类型用法分析
Mar 31 Javascript
浅析Vue.js 中的条件渲染指令
Nov 19 Javascript
vue中使用element ui的弹窗与echarts之间的问题详解
Oct 25 Javascript
node.js 如何监视文件变化
Sep 01 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实现生成透明背景的PNG缩略图函数分享
2014/07/08 PHP
PHP实现HTML生成PDF文件的方法
2014/11/07 PHP
php操作(删除,提取,增加)zip文件方法详解
2015/03/12 PHP
使用Rancher在K8S上部署高性能PHP应用程序的教程
2020/07/10 PHP
IE8 兼容性问题(属性名区分大小写)
2009/06/04 Javascript
Jquery常用技巧收集整理篇
2010/11/14 Javascript
jquerymobile checkbox及时刷新才能获取其准确值
2012/04/14 Javascript
利用js实现选项卡的特别效果的实例
2013/03/03 Javascript
jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮
2013/10/11 Javascript
一个简单的实现下拉框多选的插件可移植性比较好
2014/05/05 Javascript
用js提交表单解决一个页面有多个提交按钮的问题
2014/09/01 Javascript
javascript获取dom的下一个节点方法
2014/09/05 Javascript
为什么Node.js会这么火呢?Node.js流行的原因
2014/12/01 Javascript
js操作滚动条事件实例
2015/01/29 Javascript
jQuery实现的网页竖向菜单效果代码
2015/08/26 Javascript
JavaScript的React Web库的理念剖析及基础上手指南
2016/05/10 Javascript
利用angular.copy取消变量的双向绑定与解析
2016/11/25 Javascript
js制作可以延时消失的菜单
2017/01/13 Javascript
详解html-webpack-plugin插件(用法总结)
2018/09/12 Javascript
详解Vue 换肤方案验证
2019/08/28 Javascript
[00:39]DOTA2上海特级锦标赛 Liquid战队宣传片
2016/03/04 DOTA
Python的内存泄漏及gc模块的使用分析
2014/07/16 Python
Python简单进程锁代码实例
2015/04/27 Python
Python中的rfind()方法使用详解
2015/05/19 Python
自己使用总结Python程序代码片段
2015/06/02 Python
Python生成器以及应用实例解析
2018/02/08 Python
Python中分支语句与循环语句实例详解
2018/09/13 Python
python语言元素知识点详解
2019/05/15 Python
基于python的BP神经网络及异或实现过程解析
2019/09/30 Python
tensorflow实现tensor中满足某一条件的数值取出组成新的tensor
2020/01/04 Python
CSS3制作圆角图片和椭圆形图片
2016/07/08 HTML / CSS
CSS3实现可爱的小黄人动画
2016/07/11 HTML / CSS
团日活动策划书
2014/02/01 职场文书
医疗器械售后服务承诺书
2014/05/21 职场文书
2014年教师节讲话稿5篇
2014/09/10 职场文书
微信小程序实现拍照和相册选取图片
2021/05/09 Javascript