javascript——面向对象程序设计(1)
<script type="text/javascript">
//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]:在读取时调用的函数 默认值undefined
//[Set]:在写入属性时调用的函数 默认值Undefined
var book={
_year:2004,
edition:1
} Object.defineProperty(book,"year",{
get:function(){
return this._year;
},
set:function(value){
if(value>2004){
this._year=value;
this.edition +=value-2004;
}
}
});
book.year=2005;
alert(book.edition);// //创建对象
//1、将构造函数当做函数
function Person(name,age,job) {
this.name=name;
this.age=age;
this.job=job;
this.sayName=function(){
alert(this.name);
}
} //当做构造函数使用
var person=new Person("xulei",23,"software");
person.sayName(); //作为普通函数使用
Person("xulei2",23,"job2");//添加到window中
window.sayName(); //在另一个对象的作用域中调用
var o=new Object();
Person.call(o,"xulei3",23,"job3");
o.sayName();
</script>
javascript——面向对象程序设计(1)的更多相关文章
- JavaScript 面向对象程序设计(下)——继承与多态 【转】
JavaScript 面向对象程序设计(下)--继承与多态 前面我们讨论了如何在 JavaScript 语言中实现对私有实例成员.公有实例成员.私有静态成员.公有静态成员和静态类的封装.这次我们来讨论 ...
- JavaScript面向对象程序设计:数组
或许你会奇怪,面向对象的程序设计为什么从数组开始讲起?这是因为……其间的种种关系吧……嘿嘿,这里先卖个关子,先来看看我们熟悉的数组在JavaScript里面是什么样子的. 1. 创建数组 在J ...
- javascript面向对象程序设计系列(一)---创建对象
javascript是一种基于对象的语言,但它没有类的概念,所以又和实际面向对象的语言有区别,面向对象是javascript中的难点之一.现在就我所理解的总结一下,便于以后复习: 一.创建对象 1.创 ...
- [TimLinux] JavaScript 面向对象程序设计
1. 面向对象 面向对象语言有一个标志:都有类的概念.通过类可以创建任意多个具有相同属性和方法的对象.ECMAScript中没有类的概念,因此JavaScript中的对象夜雨基于类的语言中的面向对象有 ...
- javascript——面向对象程序设计(4)
<script type="text/javascript"> //1.继承 //2.原型链 //3.借用构造函数 //4.组合继承 //5.原型式继承 //6.寄生式 ...
- javascript——面向对象程序设计(3)
<script type="text/javascript"> //1.结合使用构造函数模式和原型模式 //2.动态原型模式 //3.寄生构造函数模式 //4.稳妥构造 ...
- javascript——面向对象程序设计(2)
<script type="text/javascript"> //1.理解原型对象 //2.原型与in操作符 //3.更简单的原型语法 //4.原型的动态性 //5. ...
- javascript面向对象程序设计
在学习js面向对象编程之前,首先须要知道什么是面向对象.面向对象语言都有类的概念,通过它能够创建具有同样属性和方法的对象.但js并没有类的概念,因此js中的对象和其它语言的对象有所不同. js对象能够 ...
- javascript 面向对象程序设计--深刻理解对象
javascript中,每个对象都是基于一个引用类型创建的,我们可以把ECMAScript 的对象想象成散列表:无非就是一组名值对,其中值可以是数据或函数. 深刻理解对象 创建自定义对象的最简单方式就 ...
随机推荐
- 【转】在VMware中安装OS X Yosemite
原文网址:http://blog.gaohaobo.com/229.html OS X(前称:Mac OS X)操作系统是由苹果公司(Apple Inc.)为其Mac系列产品开发的.基于Unix的专属 ...
- (转载)Mac和iOS开发资源汇总—更新于2013-07-19
(转载)http://beyondvincent.com/2013/07/18/resources-for-mac-and-ios-developers/ 小引 本文主要汇集一些苹果开发的资源,会经常 ...
- Linux学习笔记14——使用fcntl实现文件锁定
期末考试快要来了,Linux学习进度一下拉下来许多.今天学习的是文件锁定,在Linux中,实现文件锁定的方法很多,例如fcntl和lockf.下面主要是fcntl的调用. fcntl函数的原型是:in ...
- String的成员方法的使用
<%@ page language="java" contentType="text/html; charset=gbk"%> <html&g ...
- jump_ur.php通知模板
<title>出错啦~~~</title> <script language="javascript" type="text/javascr ...
- c#基础语言编程-Path和Directory
引言 在程序常会对文件操作,在对文件操作中需要对文件路径的进行定位,在.Net中针对寻找文件提供两个静态类以供调用,Path和Directory. Path类 来自命名空间SYstem.IO,Path ...
- c#语言基础编程-转义符
C#转义字符: 引言 为了在程序中能够控制字符的输出以及区分开双引号和单引号(双引号和单引号在程序中标示里面的内容为字符串和字符),所以用一种特殊的字符常量:是·以反斜线"\"开头 ...
- 【转】setAnimation和startAnimation区别
http://stackoverflow.com/questions/10909865/setanimation-vs-startanimation-in-android http://blog.cs ...
- TopCoder SRMS 1 字符串处理问题 Java题解
Problem Statement Let's say you have a binary string such as the following: 011100011 One way to e ...
- linux device driver —— 字符设备
现在对linux设备驱动还没有什么认识,跟着书上敲了一个字符驱动,这里把代码贴一下. 测试环境是 Ubuntu 16.04 64bit 驱动程序: #include <linux/fs.h> ...