浅谈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的版本实现执行不同的代码
May 11 Javascript
JavaScript编程的10个实用小技巧
Apr 18 Javascript
JavaScript闭包详解
Feb 02 Javascript
JavaScript定时器和优化的取消定时器方法
Jul 03 Javascript
JS插件overlib用法实例详解
Dec 26 Javascript
JS通过Cookie判断页面是否为首次打开
Feb 05 Javascript
Node.js的项目构建工具Grunt的安装与配置教程
May 12 Javascript
深入理解JavaScript 参数按值传递
May 24 Javascript
移动设备手势事件库Touch.js使用详解
Aug 18 Javascript
基于jquery实现五星好评
Nov 18 jQuery
react合成事件与原生事件的相关理解
May 13 Javascript
JS中如何优雅的使用async await详解
Oct 05 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实现MySQL更新记录的代码
2008/06/07 PHP
基于php权限分配的实现代码
2013/04/28 PHP
解析php中两种缩放图片的函数,为图片添加水印
2013/06/14 PHP
ThinkPHP写数组插入与获取最新插入数据ID实例
2014/11/03 PHP
PHP中使用BigMap实例
2015/03/30 PHP
PHP调用API接口实现天气查询功能的示例
2017/09/21 PHP
PHP+Ajax实现的检测用户名功能简单示例
2019/02/12 PHP
JQuery 解析多维的Json数据格式
2009/11/02 Javascript
jQuery中bind,live,delegate与one方法的用法及区别解析
2013/12/30 Javascript
Linux下编译安装php libevent扩展实例
2015/02/14 Javascript
Javascript中的方法链(Method Chaining)介绍
2015/03/15 Javascript
JS实现可直接显示网页代码运行效果的HTML代码预览功能实例
2015/08/06 Javascript
Nodejs的express使用教程
2015/11/23 NodeJs
JS中判断字符串中出现次数最多的字符及出现的次数的简单实例
2016/06/03 Javascript
JS简单获取客户端IP地址的方法【调用搜狐接口】
2016/09/05 Javascript
教你快速搭建Node.Js服务器的方法教程
2017/03/30 Javascript
Angular 2父子组件之间共享服务通信的实现
2017/07/04 Javascript
详解Vue学习笔记进阶篇之列表过渡及其他
2017/07/17 Javascript
Vue SSR 组件加载问题
2018/05/02 Javascript
JS中使用new Option()实现时间联动效果
2018/12/10 Javascript
JS前端知识点 运算符优先级,URL编码与解码,String,Math,arguments操作整理总结
2019/06/27 Javascript
微信小游戏中three.js离屏画布的示例代码
2020/10/12 Javascript
[39:00]Optic vs VP 2018国际邀请赛淘汰赛BO3 第三场 8.24
2018/08/25 DOTA
Python实现的HTTP并发测试完整示例
2020/04/23 Python
Python黑帽编程 3.4 跨越VLAN详解
2016/09/28 Python
Python Json序列化与反序列化的示例
2018/01/31 Python
Python matplotlib绘图可视化知识点整理(小结)
2018/03/16 Python
Python3使用Matplotlib 绘制精美的数学函数图形
2019/04/11 Python
Scrapy项目实战之爬取某社区用户详情
2020/09/17 Python
百联网上商城:i百联
2017/01/28 全球购物
财会自我鉴定范文
2013/12/27 职场文书
教师个人成长总结
2015/02/11 职场文书
2015小学语文教师个人工作总结
2015/05/20 职场文书
宿舍管理制度范本
2015/08/07 职场文书
golang elasticsearch Client的使用详解
2021/05/05 Golang
Mysql忘记密码解决方法
2022/02/12 MySQL