浅谈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做flash做的事..才完成的一个类.Auntion Action var 0.1
Feb 23 Javascript
javascript 放大镜 v1.0 基于Yui2 实现的放大镜效果
Mar 08 Javascript
基于JQuery实现相同内容合并单元格的代码
Jan 12 Javascript
jQuery实现密保互斥问题解决方案
Aug 16 Javascript
javascript实现日期格式转换
Dec 16 Javascript
关于function类中定义变量this的简单说明
May 28 Javascript
jQuery ajaxSubmit 实现ajax提交表单局部刷新
Jul 04 Javascript
Extjs表单输入框异步校验的插件实现方法
Mar 20 Javascript
JS失效 提示HTML1114: (UNICODE 字节顺序标记)的代码页 utf-8 覆盖(META 标记)的冲突的代码页 utf-8
Jun 23 Javascript
AngularJS ui-router刷新子页面路由的方法
Jul 23 Javascript
基于Bootstrap和JQuery实现动态打开和关闭tab页的实例代码
Jun 10 jQuery
JavaScript变量作用域及内存问题实例分析
Jun 10 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 url 加密解密函数代码
2011/08/26 PHP
关于ob_get_contents(),ob_end_clean(),ob_start(),的具体用法详解
2013/06/24 PHP
深入解析Session是否必须依赖Cookie
2013/08/02 PHP
Yii中的relations数据关联查询及统计功能用法详解
2016/07/14 PHP
PHPMailer发送邮件
2016/12/28 PHP
php实现的生成迷宫与迷宫寻址算法完整实例
2017/11/06 PHP
Laravel框架模板继承操作示例
2018/06/11 PHP
索趣科技的答案
2007/02/07 Javascript
jQuery 使用手册(六)
2009/09/23 Javascript
jquery获取radio值(单选组radio)
2014/10/16 Javascript
javascript使用shift+click实现选择和反选checkbox的方法
2015/05/04 Javascript
js限制文本框只能输入中文的方法
2015/08/11 Javascript
javascript ASCII和Hex互转的实现方法
2016/12/27 Javascript
详解JavaScript常量定义
2017/01/03 Javascript
javascript 单例模式详解及简单实例
2017/02/14 Javascript
js清除浏览器缓存的几种方法
2017/03/15 Javascript
Vue.js基础学习之class与样式绑定
2017/03/20 Javascript
详解node.js平台下Express的session与cookie模块包的配置
2017/04/26 Javascript
解决vue同一slot在组件中渲染多次的问题
2018/09/06 Javascript
关于JavaScript 数组你应该知道的事情(推荐)
2019/04/10 Javascript
Javascript节流函数throttle和防抖函数debounce
2020/12/03 Javascript
Flask的图形化管理界面搭建框架Flask-Admin的使用教程
2016/06/13 Python
Python操作mysql数据库实现增删查改功能的方法
2018/01/15 Python
Python聊天室程序(基础版)
2018/04/01 Python
将自己的数据集制作成TFRecord格式教程
2020/02/17 Python
在python里使用await关键字来等另外一个协程的实例
2020/05/04 Python
Python实现SMTP邮件发送
2020/06/16 Python
什么是CSS3 HSLA色彩模式?HSLA模拟渐变色条
2016/04/26 HTML / CSS
小学生手册家长评语
2014/04/16 职场文书
感恩老师的演讲稿
2014/05/06 职场文书
公积金接收函格式
2015/01/30 职场文书
义诊活动通知
2015/04/24 职场文书
撤诉书怎么写
2015/05/19 职场文书
银行工作心得体会范文
2016/01/23 职场文书
六年级作文之自救
2019/12/19 职场文书
python之PySide2安装使用及QT Designer UI设计案例教程
2021/07/26 Python