浅谈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中面向对象技术的模拟
Sep 25 Javascript
input按钮的事件处理大全
Dec 10 Javascript
jQuery寻找n以内完全数的方法
Jun 24 Javascript
AngularJS 模型详细介绍及实例代码
Jul 27 Javascript
jquery实现垂直和水平菜单导航栏
Aug 27 Javascript
JavaScript编写一个简易购物车功能
Sep 17 Javascript
微信小程序 location API接口详解及实例代码
Oct 12 Javascript
Javascript中内建函数reduce的应用详解
Oct 20 Javascript
浅谈JavaScript闭包
Apr 09 Javascript
如何换个角度使用VUE过滤器详解
Sep 11 Javascript
Vue组件模板及组件互相引用代码实例
Mar 11 Javascript
解决vue.js中settimeout遇到的问题(时间参数短效果不稳定)
Jul 21 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
第三节--定义一个类
2006/11/16 PHP
php 判断访客是否为搜索引擎蜘蛛的函数代码
2011/07/29 PHP
jQuery获取json后使用zy_tmpl生成下拉菜单
2015/03/27 PHP
THINKPHP截取中文字符串函数实例代码
2017/03/20 PHP
从JavaScript 到 JQuery (1)学习小结
2009/02/12 Javascript
javascript 对象比较实现代码
2009/04/27 Javascript
asp.net+jquery滚动滚动条加载数据的下拉控件
2010/06/25 Javascript
jQuery阻止冒泡和HTML默认操作
2010/11/17 Javascript
js验证电话号码与手机支持+86的正则表达式
2014/01/23 Javascript
JavaScript中数组成员的添加、删除介绍
2014/12/30 Javascript
JavaScript Math.ceil 方法(对数值向上取整)
2015/01/09 Javascript
jquery实现叠层3D文字特效代码分享
2015/08/21 Javascript
jQuery实现ajax调用WCF服务的方法(附带demo下载)
2015/12/04 Javascript
浅谈JavaScript中面向对象的的深拷贝和浅拷贝
2016/08/01 Javascript
最全面的百度地图JavaScript离线版开发
2016/09/10 Javascript
jquery PrintArea 实现票据的套打功能(代码)
2017/03/17 Javascript
Vuejs 页面的区域化与组件封装的实现
2017/09/11 Javascript
JointJS流程图的绘制方法
2018/12/03 Javascript
Python随机生成数模块random使用实例
2015/04/13 Python
python设计模式大全
2016/06/27 Python
Python使用Matplotlib实现Logos设计代码
2017/12/25 Python
TensorFlow实现Batch Normalization
2018/03/08 Python
python实现ID3决策树算法
2018/08/29 Python
python实现的MySQL增删改查操作实例小结
2018/12/19 Python
Python ATM功能实现代码实例
2020/03/19 Python
Django中Q查询及Q()对象 F查询及F()对象用法
2020/07/09 Python
python 贪心算法的实现
2020/09/18 Python
Python SMTP发送电子邮件的示例
2020/09/23 Python
解释一下抽象方法和抽象类
2016/08/27 面试题
Linux如何压缩可执行文件
2014/03/27 面试题
实习生个人的自我评价
2013/12/08 职场文书
社区优秀志愿者材料
2014/02/02 职场文书
旷课检讨书范文
2014/10/30 职场文书
工地材料员岗位职责
2015/04/11 职场文书
创业分两种人:那么哪些适合创业?,哪些适合不适合创业呢?
2019/08/23 职场文书
python实现自动清理文件夹旧文件
2021/05/10 Python