浅谈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 相关文章推荐
iframe子父页面调用js函数示例
Nov 07 Javascript
JQuery插件Quicksand实现超炫的动画洗牌效果
May 03 Javascript
js实现选中页面文字将其分享到新浪微博
Nov 05 Javascript
JS区分浏览器页面是刷新还是关闭
Apr 17 Javascript
Bootstrap 组件之按钮(二)
May 11 Javascript
javascript实现粘贴qq截图功能(clipboardData)
May 29 Javascript
JavaScript知识点总结(十)之this关键字
May 31 Javascript
JS 中LocalStorage和SessionStorage的使用
Aug 17 Javascript
js中bool值的转换及“&&”、“||”、 “!!”详解
Dec 21 Javascript
Javascript中JSON数据分组优化实践及JS操作JSON总结
Dec 22 Javascript
Vue中Axios从远程/后台读取数据
Jan 21 Javascript
mpvue性能优化实战技巧(小结)
Apr 17 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
建立动态的WML站点(一)
2006/10/09 PHP
防止本地用户用fsockopen DDOS攻击对策
2011/11/02 PHP
php分页示例分享
2014/04/30 PHP
PHP利用APC模块实现文件上传进度条的方法
2015/01/26 PHP
php生成验证码函数
2015/10/20 PHP
PHP面向对象之里氏替换原则简单示例
2018/04/08 PHP
解决laravel(5.5)访问public报错的问题
2019/10/12 PHP
php设计模式之建造器模式分析【星际争霸游戏案例】
2020/01/23 PHP
url 编码 js url传参中文乱码解决方案
2010/04/11 Javascript
JavaScript高级程序设计(第3版)学习笔记8 js函数(中)
2012/10/11 Javascript
jQuery获取cookie值及删除cookie用法实例
2016/04/15 Javascript
Jquery通过ajax请求NodeJS返回json数据实例
2016/11/08 NodeJs
js 函数式编程学习笔记
2017/03/25 Javascript
JS组件系列之MVVM组件 vue 30分钟搞定前端增删改查
2017/04/28 Javascript
浅谈vue+webpack项目调试方法步骤
2017/09/11 Javascript
nodejs async异步常用函数总结(推荐)
2017/11/17 NodeJs
babel的使用及安装配置教程
2018/02/22 Javascript
详解Vue源码学习之callHook钩子函数
2018/07/25 Javascript
mongodb初始化并使用node.js实现mongodb操作封装方法
2019/04/02 Javascript
Ajax请求时无法重定向的问题解决代码详解
2019/06/21 Javascript
Vue3 中的数据侦测的实现
2019/10/09 Javascript
Auto.JS实现抖音刷宝等刷视频app,自动点赞,自动滑屏,自动切换视频功能
2020/05/08 Javascript
vue动态设置路由权限的主要思路
2021/01/13 Vue.js
用Python的Django框架来制作一个RSS阅读器
2015/07/22 Python
Python中random模块生成随机数详解
2016/03/10 Python
Python实现监控Nginx配置文件的不同并发送邮件报警功能示例
2019/02/26 Python
Python数据可视化:幂律分布实例详解
2019/12/07 Python
Python3使用xlrd、xlwt处理Excel方法数据
2020/02/28 Python
小学毕业感言500字
2014/02/28 职场文书
三八红旗集体先进事迹材料
2014/05/22 职场文书
群众路线教育实践活动自我剖析思想汇报
2014/10/04 职场文书
2014年药店工作总结
2014/11/20 职场文书
事业单位聘任报告
2015/03/02 职场文书
戒赌保证书
2015/05/11 职场文书
求职信:会计求职的写作技巧
2019/04/24 职场文书
node.js使用express-fileupload中间件实现文件上传
2021/07/16 Javascript