javascript中的面向对象—— 学习1
面向对象:Object Oriented(OO)
一切事物皆对象,通过面向对象的方式,将显示世界的事物抽象成对象,将显示世界中的关系抽象成类、继承,帮助人们实现对显示世界的抽象与数字建模;——百科
一、基础知识点:
1、面对对象的语言都有一个标志就是都有类的概念,可以通过类创建多个具有相同属性和方法的对象;
2、ECMA-262中没有类的概念
3、ECMA-262中定义为:“无序属性的集合,其属性可以包含基本的属性值、对象或者函数”
4、理解对象:创建对象
//创建对象最简单的方式就是创建一个Object对象,再对其添加属性和方法(早期使用此方法)
var person = new Object()
person.name="Nicholas";
person.age= 56;
person.job="Software Engineer";
person.SayHai=function (){
alert(person.name)
} //以对象字面量的形式创建对象(达到的目的是一样的)
var person={
name="Nicholas";
age=34;
job="Software Engineer";
SayHai:function{
alert(person.name);
}
Ask:function{
alert("Hello World");
}
}//注意此方法中是如何创建对象方法的
二、属性类型
1、数据属性
//默认都为true
[[Configurable]]//表示能否通过delete删除属性从而重新定义属性、能否修改属性特性、或能否把属性改为访问器属性
[[Enumerable]]//能否通过for-in循环返回属性
[[Writable]] //能否修改属性的值
[[Value]] //包含这个属性的数据值
要修改属性默认的特性,必须用ECMAScript5的Object.defineProperty()方法
var person ={}
Object.defineProperty(person,"name",{
Writable:false,
Value:"Nicholas"
});
注:以上writable:false; 就是配置name属性不可修改 在严格模式下修改回报错
var person={}
Object.defineProperty(person,"name",{
Configurable:false,
Value:"Nicholas";
});
delete person.name;
alert(person.name);//Nicholas
注:以上Configurable:false; 所以delete删除 person.name在非严格模式下不起作用,在严格模式下回报错;
☆☆☆☆☆ 可以多次Object.defineProperty()方法修改同一个属性,但在configurable特性设置了false之后在调用、修改就会有限制了(报错)
2、访问器属性
三、定义多个属性
//定义多个属性
var book={};
Object.defineProperties(book,{
_year:{
Writable:true,
Value:2004
},
edition:{
Writable:true,
Value:1
},
year:{
get:function(){
return this._year;
},
set:function(){
if(newValue > 2004){
this._yeay=newValue;
this.edition+=newValue - 2004
}
}
}
});
四、读取属性的特性;
Object.getOwnPropertyDescriptor() // 方法
javascript中的面向对象—— 学习1的更多相关文章
- 如何理解并学习javascript中的面向对象(OOP) [转]
如果你想让你的javascript代码变得更加优美,性能更加卓越.或者,你想像jQuery的作者一样,写出属于自己优秀的类库(哪怕是基于 jquery的插件).那么,你请务必要学习javascript ...
- 简单分析JavaScript中的面向对象
初学JavaScript的时候有人会认为JavaScript不是一门面向对象的语言,因为JS是没有类的概念的,但是这并不代表JavaScript没有对象的存在,而且JavaScript也提供了其它的方 ...
- 前端开发:面向对象与javascript中的面向对象实现(二)构造函数与原型
前端开发:面向对象与javascript中的面向对象实现(二)构造函数与原型 前言(题外话): 有人说拖延症是一个绝症,哎呀治不好了.先不说这是一个每个人都多多少少会有的,也不管它究竟对生活有多么大的 ...
- 前端开发:面向对象与javascript中的面向对象实现(一)
前端开发:面向对象与javascript中的面向对象实现(一) 前言: 人生在世,这找不到对象是万万不行的.咱们生活中,找不到对象要挨骂,代码里也一样.朋友问我说:“嘿,在干嘛呢......”,我:“ ...
- JavaScript从初见到热恋之深度讨论JavaScript中的面向对象。
JavaScript中的面向对象.面向对象的三个基本特征:封装.继承.多态. 1.封装 js的封装如下 定义Person类 function Person(name,age,sex) { this.n ...
- 前端开发:javascript中的面向对象
前端开发:面向对象与javascript中的面向对象实现(一) 面向对象理解: 面向对象是一种对现实世界理解和抽象的方法,是一种先进的程序设计理念,是一种比较抽象的,多形态的设计模式.我们可以这么理解 ...
- 深入理解javascript中实现面向对象编程方法
介绍Javascript中面向对象编程思想之前,需要对以下几个概念有了解: 1. 浅拷贝和深拷贝:程序在运行过程中使用的变量有在栈上的变量和在堆上的变量,在对象或者变量的赋值操作过程中,大多数情况先是 ...
- JavaScript中的面向对象的讨论(转)
前言 今天,WEB2.0时代的到来,给了JavaScript又一次大展身手的机会.Web2.0借助JavaScript技术,使得客户端的Web体验更加丰富多彩,同时JavaScript面对的问题域也变 ...
- JavaScript中的EcMAScript学习笔记
一.Javascript概述(知道) a.一种基于对象和事件驱动的脚本语言 b.作用: 给页面添加动态效果 c.历史: 原名叫做livescript.W3c组织开发的标准叫ECMAs ...
随机推荐
- Python学习入门基础教程(learning Python)--6 Python下的list数据类型
1. List是数组么? 答案是: 不是!Python 里面有一个非常强大的数据类型list.他什么都能装下!list里面既可以支持 int类型,也可以支持str类型. >>> li ...
- DataOutputStream的writeBytes(String s)
最近,在关于网络请求中有用到DataOutputStraem中的writeBytes()方法,然而就是这个问题,导致了传输中文时就出现问题,着实困扰了很长一段时间. 后来,服务器端同事建议我使用Dat ...
- eclipse安装svn插件的多种方式
方法一:在线安装 1.打开HELP->MyEclipse Configuration Center.切换到SoftWare标签页. 2.点击Add Site 打开对话框,在对话框Name输入Sv ...
- java类构造器的理解
子类不能继承父类的构造器(构造方法或者构造函数),但是父类的构造器带有参数的,则必须在子类的构造器中显式地通过super关键字调用父类的构造器并配以适当的当属列表. 如果父类有无参构造器,则在子类的构 ...
- HTTP could not register URL http://+:86/. 设置VS默认以管理员权限打开
在使用visual studio 2013启动self host webapi时候碰到下面的错误: 详细错误信息如下: HTTP could not register URL http://+:8 ...
- Python 购物车----之用户部分
知识点: 文件读,写操作,if 判断, for 循环 salary = input("输入你的工资:") bought_list = [] product_list = {} wi ...
- 微信小程序数据请求方法wx.request小测试
微信小程序数据请求方法 wx.request wxml文件: <view> <textarea value="{{textdata}}"/> </vi ...
- call 与 apply的区别
1.方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call ...
- 《我与Android不得不说的故事-1-立贴明志》
产品需要迭代,人也一样,自我更新,才能不断进步,进军新领域,立贴明志. 顺便记录一下新路上的坑坑洼洼
- Smail语法
1.数据类型 2.函数: Func-Name (Para-Type1Para-Type2Para-Type3...)Return-Type 注意参数与参数之间没有任何分隔符 3.函数调用: 4.关于s ...