浅谈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 相关文章推荐
用javascript来实现动画导航效果的代码
Dec 16 Javascript
JS控制显示隐藏兼容问题(IE6、IE7、IE8)
Apr 01 Javascript
Javascript base64编码实现代码
Dec 02 Javascript
js实现字符串的16进制编码不加密
Apr 25 Javascript
Node.js项目中调用JavaScript的EJS模板库的方法
Mar 11 Javascript
jQuery Ajax传值到Servlet出现乱码问题的解决方法
Oct 09 Javascript
Bootstrap源码解读按钮(5)
Dec 23 Javascript
javascript设计模式之单体模式学习笔记
Feb 15 Javascript
利用node.js搭建简单web服务器的方法教程
Feb 20 Javascript
基于bootstrap实现收缩导航条
Mar 17 Javascript
Element Input组件分析小结
Oct 11 Javascript
Openlayers测量距离与面积的实现方法
Sep 25 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
Wordpress php 分页代码
2009/10/21 PHP
php文档更新介绍
2011/07/22 PHP
Laravel使用Queue队列的技巧汇总
2019/09/02 PHP
效率高的Javscript字符串替换函数的benchmark
2008/08/02 Javascript
表格 隔行换色升级版
2009/11/07 Javascript
jquery blockUI 遮罩不能消失与不能提交的解决方法
2011/09/17 Javascript
javascript编码的几个方法详细介绍
2013/01/06 Javascript
JavaScript组合拼接字符串的效率对比测试
2014/11/06 Javascript
用JavaScript实现对话框的教程
2015/06/04 Javascript
js实现网页抽奖实例
2015/08/05 Javascript
jquery移动端TAB触屏切换实现效果
2020/12/22 Javascript
JS实现按比例缩放图片的方法(附C#版代码)
2015/12/08 Javascript
详解Webwork中Action 调用的方法
2016/02/02 Javascript
原生JS实现网络彩票投注效果
2016/09/25 Javascript
angular ngClick阻止冒泡使用默认行为的方法
2016/11/03 Javascript
10个在JavaScript开发中常遇到的BUG
2017/12/18 Javascript
[02:28]DOTA2 2015国际邀请赛中国区预选赛首日现场百态
2015/05/26 DOTA
Python构造自定义方法来美化字典结构输出的示例
2016/06/16 Python
python队列queue模块详解
2018/04/27 Python
在python中利用最小二乘拟合二次抛物线函数的方法
2018/12/29 Python
Python使用pandas和xlsxwriter读写xlsx文件的方法示例
2019/04/09 Python
Python实现微信小程序支付功能
2019/07/25 Python
解决Python计算矩阵乘向量,矩阵乘实数的一些小错误
2019/08/26 Python
使用pytorch和torchtext进行文本分类的实例
2020/01/08 Python
用opencv给图片换背景色的示例代码
2020/07/08 Python
Python中bisect的用法及示例详解
2020/07/20 Python
巴基斯坦电子产品购物网站:Home Shopping
2017/09/14 全球购物
美国班级戒指、帽子和礼服、毕业产品、年鉴:Balfour
2018/11/01 全球购物
幼儿园托班开学寄语
2014/01/18 职场文书
租房合同协议书
2014/04/09 职场文书
护士节策划方案
2014/05/19 职场文书
大学毕业生管理学求职信
2014/09/01 职场文书
《时代广场的蟋蟀》读后感:真挚友情,温暖世界!
2020/01/08 职场文书
深入理解java.lang.String类的不可变性
2021/06/27 Java/Android
关于Mybatis中SQL节点的深入解析
2022/03/19 Java/Android
oracle delete误删除表数据后如何恢复
2022/06/28 Oracle