浅谈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中this关键字使用方法详解
Mar 08 Javascript
jQuery 处理网页内容的实现代码
Feb 15 Javascript
avalonjs实现仿微博的图片拖动特效
May 06 Javascript
常用的Javascript数据验证插件
Aug 04 Javascript
JavaScript关于提高网站性能的几点建议(一)
Jul 24 Javascript
利用浮层使select不可选的实现方法
Dec 03 Javascript
JavaScript实现瀑布流以及加载效果
Feb 11 Javascript
移动端使用localResizeIMG4压缩图片
Apr 22 Javascript
javascript实现循环广告条效果
Dec 12 Javascript
使用electron将vue-cli项目打包成exe的方法
Sep 29 Javascript
小程序实现留言板
Nov 02 Javascript
layui prompt 设置允许空白提交的方法
Sep 24 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中的Session对象如何使用
2015/09/25 PHP
PHP获取网站中各文章的第一张图片的代码示例
2016/05/20 PHP
利用php-cli和任务计划实现订单同步功能的方法
2017/05/03 PHP
[原创]PHP实现字节数Byte转换为KB、MB、GB、TB的方法
2017/08/31 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
JS在IE和FF下attachEvent,addEventListener学习笔记
2009/11/26 Javascript
js 对小数加法精度处理示例说明
2013/12/27 Javascript
Javascript基础教程之数据类型 (字符串 String)
2015/01/18 Javascript
js+jquery常用知识点汇总
2015/03/03 Javascript
javascript带回调函数的异步脚本载入方法实例分析
2015/07/02 Javascript
jQuery中的siblings用法实例分析
2015/12/24 Javascript
AngularJS实用开发技巧(推荐)
2016/07/13 Javascript
微信小程序 Storage API实例详解
2016/10/02 Javascript
微信小程序版翻牌小游戏
2018/01/26 Javascript
深入浅析vue-cli@3.0 使用及配置说明
2019/05/08 Javascript
微信小程序中target和currentTarget的区别小结
2020/11/06 Javascript
Python基础之函数用法实例详解
2014/09/10 Python
Python的函数的一些高阶特性
2015/04/27 Python
python 实现删除文件或文件夹实例详解
2016/12/04 Python
Python定时任务工具之APScheduler使用方式
2019/07/24 Python
详解一种用django_cache实现分布式锁的方式
2019/09/01 Python
Django框架model模型对象验证实现方法分析
2019/10/02 Python
Python解释器及PyCharm工具安装过程
2020/02/26 Python
django使用graphql的实例
2020/09/02 Python
Python pathlib模块使用方法及实例解析
2020/10/05 Python
纯CSS3制作漂亮带动画效果的主机价格表
2015/04/25 HTML / CSS
使用CSS3制作一个简单的Chrome模拟器
2015/07/15 HTML / CSS
关于canvas绘制模糊问题的解决方法
2019/09/24 HTML / CSS
任课老师推荐信范文
2013/11/24 职场文书
爱心捐助倡议书
2014/05/19 职场文书
企业理念标语
2014/06/09 职场文书
乡镇党员干部四风对照检查材料思想汇报
2014/09/27 职场文书
校园环境卫生倡议书
2015/04/29 职场文书
会计主管竞聘书
2015/09/15 职场文书
运动会主持人开幕词
2016/03/04 职场文书
JS数组去重详情
2021/11/07 Javascript