浅谈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 相关文章推荐
jquery属性过滤选择器使用示例
Jun 18 Javascript
js判断IE浏览器版本过低示例代码
Nov 22 Javascript
jQuery在iframe中无法弹出对话框的解决方法
Jan 12 Javascript
ActiveX控件与Javascript之间的交互示例
Jun 04 Javascript
jQuery解析XML文件同时动态增加js文件的方法
Jun 01 Javascript
Javascript removeChild()删除节点及删除子节点的方法
Dec 27 Javascript
AngularJS用户选择器指令实例分析
Nov 04 Javascript
使用JavaScriptCore实现OC和JS交互详解
Mar 28 Javascript
vue实现动态数据绑定
Apr 28 Javascript
对vue.js中this.$emit的深入理解
Feb 23 Javascript
浅谈Vue3.0之前你必须知道的TypeScript实战技巧
Sep 11 Javascript
ztree+ajax实现文件树下载功能
May 18 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 组件化编程技巧
2009/06/06 PHP
php用户注册时常用的检验函数实例总结
2014/12/22 PHP
PHP请求Socket接口测试实例
2016/08/12 PHP
PHP中的输出echo、print、printf、sprintf、print_r和var_dump的示例代码
2020/12/01 PHP
浅谈javascript 面向对象编程
2009/10/28 Javascript
JavaScript 基础篇之对象、数组使用介绍(三)
2012/04/07 Javascript
js实现在页面上弹出蒙板技巧简单实用
2013/04/16 Javascript
node.js中的fs.write方法使用说明
2014/12/15 Javascript
用Move.js配合创建CSS3动画的入门指引
2015/07/22 Javascript
基于Jquery和CSS3制作数字时钟附源码下载(CSS3篇)
2015/11/24 Javascript
jQuery+jsp下拉框联动获取本地数据的方法(附源码)
2015/12/03 Javascript
requireJS使用指南
2016/04/27 Javascript
JavaScript cookie详解及简单实例应用
2016/12/31 Javascript
微信小程序 聊天室简单实现
2017/04/19 Javascript
JS实现自定义状态栏动画文字效果示例
2017/10/12 Javascript
vue-cli2 构建速度优化的实现方法
2019/01/08 Javascript
使用ESLint禁止项目导入特定模块的方法步骤
2019/03/04 Javascript
ElementUI中el-tree节点的操作的实现
2020/02/27 Javascript
[02:26]DOTA2英雄米拉娜基础教程
2013/11/25 DOTA
Python中os和shutil模块实用方法集锦
2014/05/13 Python
Python守护进程(daemon)代码实例
2015/03/06 Python
python查询sqlite数据表的方法
2015/05/08 Python
python实现在sqlite动态创建表的方法
2015/05/08 Python
python学习笔记之调用eval函数出现invalid syntax错误问题
2015/10/18 Python
Python编程中装饰器的使用示例解析
2016/06/20 Python
python fabric实现远程部署
2017/01/05 Python
带你了解python装饰器
2017/06/15 Python
一个Python最简单的接口自动化框架
2018/01/02 Python
Python网页正文转换语音文件的操作方法
2018/12/09 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
2020/12/10 Python
CSS3实现图片抽屉式效果的示例代码
2019/11/06 HTML / CSS
机电工程专业应届生求职信
2013/10/03 职场文书
5.1手机促销活动
2014/01/17 职场文书
《美丽的小兴安岭》教学反思
2014/02/26 职场文书
路政管理求职信
2014/06/18 职场文书
学校感恩教育活动总结
2014/07/07 职场文书