浅谈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 相关文章推荐
关于B/S判断浏览器断开的问题讨论
Oct 29 Javascript
修改jquery.lazyload.js实现页面延迟载入
Dec 22 Javascript
DWR实现模拟Google搜索效果实现原理及代码
Jan 30 Javascript
JavaScript中的Truthy和Falsy介绍
Jan 01 Javascript
jQuery过滤选择器详解
Jan 13 Javascript
如何使用jQuery技术开发ios风格的页面导航菜单
Jul 29 Javascript
利用Angular2 + Ionic3开发IOS应用实例教程
Jan 15 Javascript
javascript数组拍平方法总结
Jan 20 Javascript
vue+iview+less+echarts实战项目总结
Feb 22 Javascript
AngularJS日期格式化常见操作实例分析
May 17 Javascript
node.js如何根据URL返回指定的图片详解
Oct 21 Javascript
javascript this指向相关问题及改变方法
Nov 19 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巧获服务器端信息
2006/12/06 PHP
PHP将字符分解为多个字符串的方法
2014/11/22 PHP
php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法
2014/12/15 PHP
php图片上传类 附调用方法
2016/05/15 PHP
Laravel中前端js上传图片到七牛云的示例代码
2017/09/04 PHP
PHP网页安全认证的实例详解
2017/09/28 PHP
JS getStyle获取最终样式函数代码
2010/04/01 Javascript
一个可绑定数据源的jQuery数据表格插件
2010/07/17 Javascript
IE6背景图片不缓存问题解决方案及图片使用策略多个方法小结
2012/05/14 Javascript
js 程序执行与顺序实现详解
2013/05/13 Javascript
jQuery中dequeue()方法用法实例
2014/12/29 Javascript
基于JavaScript实现根据手机定位获取当前具体位置(X省X市X县X街道X号)
2015/12/29 Javascript
jquery插件EasyUI中form表单提交实例分享
2016/01/11 Javascript
Javascript 字符串模板的简单实现
2016/02/13 Javascript
12 款 JS 代码测试必备工具(翻译)
2016/12/13 Javascript
从vue源码看props的用法
2019/01/09 Javascript
Vue中jsx不完全应用指南小结
2019/11/01 Javascript
ES6使用 Array.includes 处理多重条件用法实例分析
2020/03/02 Javascript
JavaScript实现下拉列表
2021/01/20 Javascript
[06:04]DOTA2国际邀请赛纪录片:Just For LGD
2013/08/11 DOTA
Python help()函数用法详解
2014/03/11 Python
Windows下Python2与Python3两个版本共存的方法详解
2017/02/12 Python
利用Anaconda完美解决Python 2与python 3的共存问题
2017/05/25 Python
Python生成器generator用法示例
2018/08/10 Python
PYQT5实现控制台显示功能的方法
2019/06/25 Python
tensorflow 固定部分参数训练,只训练部分参数的实例
2020/01/20 Python
python numpy库linspace相同间隔采样的实现
2020/02/25 Python
Python基于数列实现购物车程序过程详解
2020/06/09 Python
python 进程池pool使用详解
2020/10/15 Python
PyCharm 解决找不到新打开项目的窗口问题
2021/01/15 Python
canvas与html5实现视频截图功能示例
2016/12/15 HTML / CSS
LookFantastic丹麦:英国美容护肤精品在线商城
2016/08/18 全球购物
贝斯特韦斯特酒店集团官网:Best Western
2019/01/03 全球购物
2014年团支部年度工作总结
2014/12/24 职场文书
行政人事专员岗位职责
2015/04/07 职场文书
正确使用MySQL INSERT INTO语句
2021/05/26 MySQL