一、javascript对象遍历

1.javascript属性访问

对象.属性名

对象['属性名']

var obj={name:'chen',red:function(){
alert(1);return 2;
}};
alert(obj['name']);
alert(obj.name);

 2.javascript属性遍历(for in)

//( obj[i] )此格式才有效
var obj={
name:'chen',
red:function(){
alert(1);
return 2;
},
so:'rui'
};
for(var i in obj){
alert(obj[i]);
}
//arguments
//检测参数个数:arguments.length
//访问第i个值:arguments[i]
function myArray () {
var lengs= arguments.length;
for (var i=0; i<lengs; i++) {
this[i]=arguments[i];
}
}
var arr=new myArray('chen','20','suncco');
alert(arr[1]);

二、对象的特性之封装

把对象所有的组成部分组合起来,尽可能的隐藏对象的部分细节,使其受到保护;只保留有限的接口和外部发生联系。

//工厂函数
function app(name,size){
var apps={};
apps.name=name;
apps.size=size;
apps.lookName=function(){
return name;
}
apps.lookSize=function(){
return size;
}
return apps;
}
var arr=app('chen','20M');
alert(arr.lookName()); 结果:chen
//构造函数
function app(name,size){
this.name=name;
this.size=size;
this.lookName=function(){
return this.name;
}
this.lookSize=function(){
return this.size;
}
}
var arr=new app('chen','20M');
alert(arr.name); 结果:chen
alert(arr.lookName()); 结果:chen

构造函数跟工厂函数类似,构造函数比较正式;但里面的方法一样,占用了内存空间。

//原型:prototype方法
function app(name,size){
this.name=name;
this.size=size;
this.lookName=function(){
return this.name;
}
}
app.prototype.lookSize=function(){
return this.name;
}
var arr=new app('chen','20M');
delete arr.size;
alert(arr.size); 结果:undefined
delete arr.lookSize;
alert(arr.lookSize()); 结果:chen

prototype方法会使属性或方法一直存在代码段当中;但是不能实例化对象,只能实例化属性或对象!

//混合方法
function app(name,size){
this.name=name;
this.size=size;
this.lookName=function(){
return this.name;
}
//把prototype方法放到函数里头
app.prototype.lookSize=function(){
return this.name;
}
}
var arr=new app('chen','20M');
delete arr.size;
alert(arr.size);//undefined
delete arr.lookSize;
alert(arr.lookSize());//chen

javascript对象的继承和Object对象

一、Object对象(对象的一个类可以从现有的类中派生,并且拥有现有的类的方法或是属性,这和过程叫做继承。被继承的类叫做父类或是基类,继承的类叫做子类。(一个对象拥有另一个对象的属性和方法))

优点:

提高代码的重用性

提高代码的可维护性

提高代码的逻辑性

a.constructor——返回对创建此对象的数组函数的引用

//++++++
function app(name,size){
this.name=name;
this.size=size;
this.lookName=function(){
return this.name;
}
app.prototype.lookSize=function(){
return this.name;
}
}
var arr=new app('chen','20M');
//+++++++
alert(arr.constructor); 结果:返回+号内的代码

b.Prototype 原型——对该函数对象的对象原型的引用。是函数对象的默认属性

var obj=new fun1();
function fun1 () {
this.name="zhangsan";
}
alert(obj.prototype); 结果:undefined
alert(fun1.prototype); 结果:object

对象的共享属性存放到代码段当中。

可以实现继承

//hasOwnProperty(property)
//判断一个对象是否有你给出名称的属性或对象
var obj=new fun1();
function fun1 () {
this.name="zhangsan";
}
alert(obj.hasOwnProperty("name")); 结果:true
//IsPrototypeOf(object)
//判断该对象是否为另一个对象的原型(用来检测对象的类型)
var arr=new Array();
var arc=new app();
function app(){ }
alert(app.prototype.isPrototypeOf(arc)) 结果:true
alert(app.prototype.isPrototypeOf(arr)) 结果:false

二、继承

//原型继承
function person(){
this.name="张三";
this.say=function () {
alert(this.name)
}
}
function student(){
}
student.prototype=new person();
var zhangsan=new student();
zhangsan.say(); 结果:张三
//call方法
function person () {
this.name="张三";
this.say=function () {
alert(this.name)
}
} function student () {
this.name="李四";
}
var ren=new person ();
var zhangsan=new student (); ren.say.call(zhangsan);
//apply方法,参数以数组形式
function person (name) {
this.name=name;
this.say=function () {
alert(this.name)
}
} function student () {
window.person.apply(this,["zhangsan"])
} var zhangsan=new student ();

javascript笔记整理(对象遍历封装继承)的更多相关文章

  1. JavaScript内置对象与原型继承

    (一)   理解JavaScript类定义 1>关于内置对象理解 console.log(Date.prototype.__proto__===Object.prototype    //tru ...

  2. javascript中的对象创建与继承

    js是一门基于原型的面向对象语言,与传统的面向对象如Java,C#相比,它在对象创建及继承上有自己独特的实现方式,本文主要描述js中对象创建及继承的一些实践. 1.对象创建 方式一:工厂模式创建对象 ...

  3. javascript笔记整理(对象的继承顺序、分类)

    Object.prototype.say=function(){ alert("我是顶层的方法"); } children.prototype=new parent(); pare ...

  4. javascript笔记整理(对象基础)

    一.名词解释 1.基于对象(一切皆对象,以对象的概念来编程) 2.面向对象编程(Object Oriented Programming,OOP) A.对象(JavaScript 中的所有事物都是对象) ...

  5. javascript笔记整理(DOM对象)

    DOM--document(html xml) object modle,document对象(DOM核心对象),document对象是 Window 对象的一部分,可通过window.documen ...

  6. javascript笔记整理(window对象)

    浏览器对象模型 (BOM--Browser Object Model),window对象是BOM中所有对象的核心 A.属性 1.(位置类型-获得浏览器的位置) IE:window.screenLeft ...

  7. javascript笔记整理(字符串对象)

    一.属性 1.length——字符串的长度(不区分中英文) var a="chen陈"; alert(a.length); //结果:5 2.constructor——对象的构造函 ...

  8. javascript笔记整理(数组对象)

    1.属性 a.length--设置或返回数组元素的数目 var a=[1,2,3,45,5]; alert(a.length=6) 结果:6 alert(a[5]) 结果:undefined b.co ...

  9. JavaScript笔记整理

    整理一篇工作中的JavaScript脚本笔记,不定时更新,笔记来自网上资料或者自己经验归纳. (1) 获取Url绝对路径 function getUrlRelativePath() { var url ...

随机推荐

  1. 转:requirejs2.0新特性介绍

    就在前天晚上RequireJS发布了一个大版本,直接从version1.0.8升级到了2.0.随后的几小时James Burke又迅速的将版本调整为2.0.1,当然其配套的打包压缩工具r.js也同时升 ...

  2. SkipFish

    https://zmap.io/ http://code.google.com/p/skipfish/wiki/SkipfishDoc#How_to_run_the_scanner?

  3. IT第七天 - 类及其属性、方法的理解,断点调试初识,代码优化总结,编程逻辑培养

    IT第七天 上午 类 1.对象:是多个实体抽象出来的共同点集合,对象包括:属性(即实体的特征).方法(即尸体的功能作用) 2.程序中,用类来模拟对象 3.类是抽象的,是对象的类型,是将多个拥有相同属性 ...

  4. poj 2752 Seek the Name, Seek the Fame(KMP需转换下思想)

    Seek the Name, Seek the Fame Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 10204   Ac ...

  5. ORA-00845 Oracle 启不来修改 MEMORY_TARGET

    1.内存减小导致Oracle启动不了   Last login: Sun Nov  4 15:09:06 2012 from 192.168.5.222  [oracle@h1 ~]$ sqlplus ...

  6. 【Cocos2d-X开发学习笔记】第03期:渲染框架之导演类(CCDirector)的使用

    本系列学习教程使用的是cocos2d-x-2.1.4版本(截至目前为止最新稳定版) ,PC开发环境Windows7,C++开发环境VS2010 提到“导演”一词,想必读者最先联想到的是电影.作为娱乐产 ...

  7. Apple Swift 中文教程 高速參考 基本的语法

    总的来说.语法有java的味道,也有python的味道,还有swift自己的味道. 有些语法还是挺不伦不类的,不太好理解,即使你有几年的java或python经验,也不见得有些语法你能非常轻松的看明确 ...

  8. RGB,CMYK,HSB各种颜色表示的转换 C#语言

    Introduction Why an article on "colors"? It's the same question I asked myself before writ ...

  9. hadoop源代码解读namenode高可靠:HA;web方式查看namenode下信息;dfs/data决定datanode存储位置

    点击browserFilesystem,和命令查看结果一样 当我们查看hadoop源代码时,我们看到hdfs下的hdfs-default.xml文件信息 我们查找${hadoop.tmp.dir}这是 ...

  10. C++ sizeof 操作符的用法总结

    在VC中,sizeof有着许多的用法,而且很容易引起一些错误.下面根据sizeof后面的参数对sizeof的用法做个总结. A.参数为数据类型或者为一般变量: 例如sizeof(int),sizeof ...