浅谈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或css文件后面跟参数的原因说明
Jan 09 Javascript
二叉树先序遍历的非递归算法具体实现
Jan 09 Javascript
ECMAScript6的新特性箭头函数(Arrow Function)详细介绍
Jun 07 Javascript
JavaScript获得表单target属性的方法
Apr 02 Javascript
jQuery实现表格行上移下移和置顶的方法
May 22 Javascript
莱鸟介绍javascript onclick事件
Jan 06 Javascript
JS中this上下文对象使用方式
Oct 09 Javascript
javascript遍历json对象的key和任意js对象属性实例
Mar 09 Javascript
Javascript实现一个简单的输入关键字添加标签效果实例
Jun 01 Javascript
Node.js学习之TCP/IP数据通讯(实例讲解)
Oct 11 Javascript
Bootstrap4 gulp 配置详解
Jan 06 Javascript
webpack-mvc 传统多页面组件化开发详解
May 07 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中用date函数获取当前时间有误的解决办法
2013/08/02 PHP
php去除字符串换行符示例分享
2014/02/13 PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
2014/08/18 PHP
基于PHP如何把汉字转化为拼音
2015/12/11 PHP
PHP7.1实现的AES与RSA加密操作示例
2018/06/15 PHP
制作特殊字的脚本
2006/06/26 Javascript
对textarea框的代码调试,而且功能上使用非常方便,酷
2006/06/30 Javascript
XENON基于JSON变种
2010/07/27 Javascript
Js获取事件对象代码
2010/08/05 Javascript
JQuery中使用Ajax赋值给全局变量异常的解决方法
2014/01/10 Javascript
javascript使用正则表达式检测IP地址
2014/12/03 Javascript
JavaScript判断IE版本型号
2015/07/27 Javascript
AngularJS动态生成div的ID源码解析
2016/08/29 Javascript
JS复制对应id的内容到粘贴板(Ctrl+C效果)
2017/01/23 Javascript
nodejs入门教程五:连接数据库的方法分析
2017/04/24 NodeJs
JavaScript实现省市联动过程中bug的解决方法
2017/12/04 Javascript
详解关于element el-button使用$attrs的一个注意要点
2018/11/09 Javascript
如何让微信小程序页面之间的通信不再变困难
2019/06/03 Javascript
Vue3 的响应式和以前有什么区别,Proxy 无敌?
2020/05/20 Javascript
python实现图片批量剪切示例
2014/03/25 Python
浅谈Python中函数的参数传递
2016/06/21 Python
Python处理JSON数据并生成条形图
2016/08/05 Python
python pyinstaller 加载ui路径方法
2019/06/10 Python
关于Python 的简单栅格图像边界提取方法
2019/07/05 Python
HTML table 表格边框的实现思路
2019/10/12 HTML / CSS
致1500米运动员广播稿
2014/02/07 职场文书
食品工程专业求职信
2014/06/15 职场文书
工资收入证明样本(5篇)
2014/09/16 职场文书
绿色校园广播稿
2014/10/13 职场文书
房屋租赁合同协议书范本
2014/10/19 职场文书
2015年体育教师个人工作总结
2015/05/12 职场文书
《植树问题》教学反思
2016/03/03 职场文书
Django实现翻页的示例代码
2021/05/24 Python
Java多条件判断场景中规则执行器的设计
2021/06/26 Java/Android
Java并发编程必备之Future机制
2021/06/30 Java/Android
MySQL对数据表已有表进行分区表的实现
2021/11/01 MySQL