浅谈javascript面向对象程序设计


Posted in Javascript onJanuary 21, 2015

ECMA-262把对象定义为:“无序属性的 集合,其属性可以包含基本值、对象或者函数”

理解对象,最简单的方式就是通过创建一个Object的实例,然后为它添加属性和方法

        var person = new Object();

        person.name = "Xulei";

        person.age = "23";

        person.job = "前端工程师";

        person.sayName = function () {

            alert(this.name);

        }

还可以这样写

        var person = {

            name: "xulei",

            age: 23,

            job: "前端工程",

            sayName: function () {

                alert(this.name)

            }

        }

一、属性类型:数据属性和访问其属性

        1、数据属性,有4个描述其行为的特性
        [Configurable]:表示能否通过delete删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为访问器属性,默认值为true
        [Enumerable]:表示能否通过for-in返回属性,默认值为true
        [Writable]:表示能否修改属性,默认值为true
        [Value]:包含这个属性的数据值。默认值为undefined

        var person = {

            name: "xulei"

        }

        这里创建了一个person对象,value值就是“xulei”

要修改属性的默认特性,必须使用ECMAScript5的Object.defineProperty(属性所在的对象,属性的名字,描述符对象)
描述符对象必须是configurable、enumerable、writable、value

        var peron = {}

        Object.defineProperty(peron, "name", {

            writable: false,//属性不能被修改

            value: "徐磊-xulei"

        });
        alert(peron.name);//徐磊-xulei

        peron.name = "徐磊";

        alert(peron.name);//徐磊-xulei

        以上操作在非严格模式下赋值操作会被忽略,如果在严格模式下会抛出异常
        一旦把属性定义为不可配置的就不能把它变回可配置的了。
        在多数情况下都没有必要利用Object.defineProperty()方法提供的这些高级功能。但是对理解javascript非常有用。
        建议读者不要在ie8上使用此方法。

        2、访问其属性,有4个特性
        [Configurable]:表示能否通过delete删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为访问器属性,默认值为true
        [Enumerable]:表示能否通过for-in返回属性,默认值为true
        [Get]:在读取时调用的函数
        [Set]:在写入属性时调用的函数

Javascript 相关文章推荐
jquery.bgiframe.js在IE9下提示INVALID_CHARACTER_ERR错误
Jan 11 Javascript
重构Javascript代码示例(重构前后对比)
Jan 23 Javascript
JavaScript中json使用自己总结
Aug 13 Javascript
关于jquery中全局函数each使用介绍
Dec 10 Javascript
js在数组中删除重复的元素自保留一个(两种实现思路)
Aug 22 Javascript
jQuery中wrapInner()方法用法实例
Jan 16 Javascript
JavaScript中的toLocaleDateString()方法使用简介
Jun 12 Javascript
分享10个优化代码的CSS和JavaScript工具
May 11 Javascript
Bootstrap源码学习笔记之bootstrap进度条
Dec 24 Javascript
vue组件与复用详解
Apr 08 Javascript
JavaScript实现的DOM绘制柱状图效果示例
Aug 08 Javascript
node.js基于socket.io快速实现一个实时通讯应用
Apr 23 Javascript
html的DOM中Event对象onabort事件用法实例
Jan 21 #Javascript
封装好的一个万能检测表单的方法
Jan 21 #Javascript
html的DOM中Event对象onblur事件用法实例
Jan 21 #Javascript
JS简单计算器实例
Jan 20 #Javascript
jQuery元素的隐藏与显示实例
Jan 20 #Javascript
DOM基础教程之使用DOM设置文本框
Jan 20 #Javascript
DOM基础教程之使用DOM控制表单
Jan 20 #Javascript
You might like
用php过滤危险html代码的函数
2008/07/22 PHP
深入理解PHP之require/include顺序 推荐
2011/01/02 PHP
php smarty截取中文字符乱码问题?gb2312/utf-8
2011/11/07 PHP
php自动注册登录验证机制实现代码
2011/12/20 PHP
解析WordPress中的post_class与get_post_class函数
2016/01/04 PHP
深入解析WordPress中加载模板的get_template_part函数
2016/01/11 PHP
php获取本机真实IP地址实例代码
2016/03/31 PHP
关于PHP中字符串与多进制转换函数的实例代码
2016/11/03 PHP
PHP接口并发测试的方法(推荐)
2016/12/15 PHP
php把字符串指定字符分割成数组的方法
2018/03/12 PHP
jQuery自动切换/点击切换选项卡效果的小例子
2013/08/12 Javascript
原生js操作checkbox用document.getElementById实现
2013/10/12 Javascript
jquery内置验证(validate)使用方法示例(表单验证)
2013/12/04 Javascript
js 赋值包含单引号双引号问题的解决方法
2014/02/26 Javascript
AngularJS iframe跨域打开内容时报错误的解决办法
2015/01/26 Javascript
JQuery中的事件及动画用法实例
2015/01/26 Javascript
JS实现带缓冲效果打开、关闭、移动一个层的方法
2015/05/09 Javascript
javascript检测flash插件是否被禁用的方法
2016/01/14 Javascript
JavaScript SHA-256加密算法详细代码
2016/10/06 Javascript
nodejs集成sqlite使用示例
2017/06/05 NodeJs
VUE element-ui 写个复用Table组件的示例代码
2017/11/18 Javascript
原生JS实现多个小球碰撞反弹效果示例
2018/01/31 Javascript
javascript回调函数详解
2018/02/06 Javascript
webpack配置打包后图片路径出错的解决
2018/04/26 Javascript
Selenium执行Javascript脚本参数及返回值过程详解
2020/04/01 Javascript
[01:15:56]2018DOTA2亚洲邀请赛3月30日 小组赛A组 TNC VS Newbee
2018/03/31 DOTA
python连接字符串的方法小结
2015/07/13 Python
Django使用Mysql数据库已经存在的数据表方法
2018/05/27 Python
Python替换NumPy数组中大于某个值的所有元素实例
2020/06/08 Python
Keras设置以及获取权重的实现
2020/06/19 Python
python 列表推导和生成器表达式的使用
2021/02/01 Python
html5使用canvas绘制一张图片
2014/12/15 HTML / CSS
后勤采购员岗位职责
2013/12/19 职场文书
网上商城创业计划书范文
2014/01/31 职场文书
初中生思想道德自我评价
2015/03/09 职场文书
IDEA 2022 Translation 未知错误 翻译文档失败
2022/04/24 Java/Android