浅谈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 相关文章推荐
学习js所必须要知道的一些
Mar 07 Javascript
JavaScript 中的replace方法说明
Apr 13 Javascript
Mootools 1.2教程(21)——类(二)
Sep 15 Javascript
JavaScript 对任意元素,自定义右键菜单的实现方法
May 08 Javascript
javascript获取选中的文本的方法代码
Oct 30 Javascript
JavaScript多并发问题如何处理
Oct 28 Javascript
js实现一键复制功能
Mar 16 Javascript
Javascript(es2016) import和require用法和区别详解
Aug 11 Javascript
微信小程序开发之好友列表字母列表跳转对应位置
Sep 26 Javascript
Vue引入sass并配置全局变量的方法
Jun 27 Javascript
vue-router 前端路由之路由传值的方式详解
Apr 30 Javascript
vue tab切换,解决echartst图表宽度只有100px的问题
Jul 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
解析将多维数组转换为支持curl提交的一维数组格式
2013/07/08 PHP
php加密算法之实现可逆加密算法和解密分享
2014/01/21 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(六)
2014/06/23 PHP
PDO防注入原理分析以及注意事项
2015/02/25 PHP
php使用NumberFormatter格式化货币的方法
2015/03/21 PHP
PHP实现二维数组按某列进行排序的方法
2016/11/18 PHP
解决Laravel blade模板转义html标签的问题
2019/09/03 PHP
十个优秀的Ajax/Javascript实例网站收集
2010/03/31 Javascript
Javascript 面向对象 对象(Object)
2010/05/13 Javascript
js实现运动logo图片效果及运动元素对象sportBox使用方法
2012/12/25 Javascript
javascript引用赋值(地址传值)用法实例
2015/01/13 Javascript
c#程序员对TypeScript的认识过程
2015/06/19 Javascript
javascript实现网页字符定位的方法
2015/07/14 Javascript
深入理解jQuery 事件处理
2016/06/14 Javascript
JavaScript实现倒计时跳转页面功能【实用】
2016/12/13 Javascript
AngualrJs清除定时器遇到的坑
2017/10/13 Javascript
AngularJS 实现购物车全选反选功能
2017/10/24 Javascript
Angular实现的table表格排序功能完整示例
2017/12/22 Javascript
JS简单获取并修改input文本框内容的方法示例
2018/04/08 Javascript
Vue导出页面为PDF格式的实现思路
2018/07/31 Javascript
python每次处理固定个数的字符的方法总结
2013/01/29 Python
Windows 7下Python Web环境搭建图文教程
2018/03/20 Python
IntelliJ IDEA安装运行python插件方法
2018/12/10 Python
详解Python做一个名片管理系统
2019/03/14 Python
windows系统中Python多版本与jupyter notebook使用虚拟环境的过程
2019/05/15 Python
Python 时间戳之获取整点凌晨时间戳的操作方法
2020/01/28 Python
python代码如何实现余弦相似性计算
2020/02/09 Python
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
2020/09/24 Python
canvas与html5实现视频截图功能示例
2016/12/15 HTML / CSS
使用canvas来完成线性渐变和径向渐变的功能的方法示例
2019/07/25 HTML / CSS
学习全国两会精神心得体会范文
2014/03/17 职场文书
项目经理任命书范本
2014/06/05 职场文书
授权收款委托书
2014/09/23 职场文书
2014年乡镇工作总结
2014/11/21 职场文书
签证工作证明模板
2015/06/15 职场文书
解决使用了nginx获取IP地址都是127.0.0.1 的问题
2021/09/25 Servers