ExtJS教程(2)--- Javascript类和对象基础知识

Javascript中的类其实就是一个function

如下面定义一个Person类

//定义一个类
function Person(){
	this.name = 'jaune';
	this.age = 18;
}

//创建一个对象

var person1 = new Person();
console.log(person1);

/*
 * 控制台打出以下内容
 * Person {name: "jaune", age: 18}
 */ 

上面是一个简单的定义类及创建类的方法

//定义一个带有方法的类
function Person(){
	this.name = 'jaune';
	this.age = 18;

	this.getName=function(){
		return this.name;
	}

	this.setName = function(name){
		this.name = name;
	}
}

//创建一个对象

var person1 = new Person();
person1.setName('me')
console.log(person1);

/*
 * 控制台打出以下内容
 * Person {name: "me", age: 18, getName: function, setName: function}
 */ 
//定义一个带有参数的类
function Person(name,age){
	this.name = name || 'jaune';
	this.age = age || 18;

	this.getName=function(){
		return this.name;
	}

	this.setName = function(name){
		this.name = name;
	}
}

//创建一个对象

var person1 = new Person();
console.log(person1);
var person2 = new Person('jaune162',23);
console.log(person2);
/*
 * 控制台打出以下内容
 * Person {name: "jaune", age: 18, getName: function, setName: function}
 * Person {name: "jaune162", age: 23, getName: function, setName: function}
 */ 

Javascript对象的操作

对象原型prototype的应用,利用prototype可以为类添加一些属性或方法,注意必须是类,对象是没有原型的

console.log(Person.prototype);

Person.prototype.getInfo = function(){
	return this.name + ' is ' + this.age + ' years old';
};
//创建一个对象

var person2 = new Person('jaune162',23);
console.log(person2.getInfo());

console.log(person2.prototype);
/*
 * 控制台打出以下内容,第一行是类的原型属性,第二行是利用原型添加的方法,第三行是对象原型,由此可见对象是没有原型的
 * Person {}
 * jaune162 is 23 years old
 * undefined
 */ 
/**
 * apply方法:为对象批量添加属性和方法
 * @param {Object} obj 对象或类
 * @param {Object} config 属性和方法的集合
 */
function apply(obj,config){

	if (config == null) return obj;

	for(var name in config){
		if(config.hasOwnProperty(name)){
			obj[name] = config[name];
		}
	}

	return obj;
}

//有了这个方法我们的Person类就可以改造的更加灵活了
function Person(config){

	apply(this,config);

}

var person = new Person({
	name:'wang',
	age:16,
	email:'[email protected]'
});

console.log(person);
//Person {name: "wang", age: 16, email: "[email protected]"} 

下面我们对apply进行一些改造,改为applyIf,让这个方法只覆盖对象中有的属性

/**
 * applyIf方法:可以称之为,为对象批量赋值
 * @param {Object} obj 对象或类
 * @param {Object} config 属性和方法的集合
 */
function applyIf(obj,config){

	if (config == null) return obj;

	for(var name in config){
		if(config.hasOwnProperty(name) && obj.hasOwnProperty(name)){
			obj[name] = config[name];
		}
	}

	return obj;
}

//测试applyIf用在上面的类中的效果
function Person(config){

	applyIf(this,config);

}
var person = new Person({
	name:'wang',
	age:16,
	email:'[email protected]'
});

console.log(person);
//Person {} 

可以看出根本没有打出任何属性,因为类中不存在这些属性,我们对Person类,稍做改造来看我们的成果

function Person(config){
	this.name = '';
	this.age = '';

	applyIf(this,config);

}
var person = new Person({
	name:'wang',
	age:16,
	email:'[email protected]'
});

console.log(person);
//Person {name: "wang", age: 16} 

可以看出通过这个方法可以实现对类的属性的控制,不会在new对象时出现类中本来就不存在的属性。

未完待续...

ExtJS教程(2)--- Javascript类和对象基础知识

时间: 2024-10-13 07:03:50

ExtJS教程(2)--- Javascript类和对象基础知识的相关文章

JAVA 类和对象基础知识详解

/*文章中用到的代码只是一部分,需要源码的可通过邮箱联系我 [email protected]*/ 和C++一样,JAVA也是一门面向对象的语言,其基础和核心是类和对象.而面向对象的思想是来源与显示生活,自然在学习时联系现实生活会理解得更深. 1.对象 首先,什么是对象? 在现实生活中只要是一个具体的物体或者一个具体的事物就是一个对象.你所看到的任何一个物体,你所想的任何一个物体都是对象,比如:某一台电脑,某一个人 其次,知道了什么是对象之后便是去描述.你会从哪些方面去描述对象?分别有些什么内容

J2SE基础:1.类和对象基础

什么是对象 在Java语言,所有的人,事物或者模块都是一个对象. 相同的对象具有一些相同的特性. 狗,猫,蛇3个对象(动物的对象) 苹果,梨,桔子3个对象(水果的对象) 什么是类 可以将现实生活中的对象经过抽象 这种抽象数据类型称为类. 动物类(Animal) 水果类(Fruit) 类和对象的关系 类是对象的模板(抽象化表示),对象是类的实例化(具体化的展现) 类的组成结构 Java是纯面向对象(除了8种基本数据类型) 而对象是从类产生的.因此类是组成Java程序最基本也是最核心的 元素. 变量

类和对象基础题

一.           类和对象基础题 1.编写一个Java应用程序,该程序中有3个类:Ladder.Circle和主类A.具体要求如下:Ladder类具有类型为double的上底.下底.高.面积属性,具有返回面积的功能,包括一个构造方法对上底.下底.高进行初始化.Circle类具有类型为double的半径.周长和面积属性,具有返回周长.面积的功能,包括一个构造方法对半径进行初始化.主类A用来测试类Ladder和类Circle的功能. 2.按要求编写Java应用程序: (1)编写西游记人物类(

day29—JavaScript中DOM的基础知识应用

转行学开发,代码100天--2018-04-14 JavaScript中DOM操作基础知识即对DOM元素进行增删改操作.主要表现与HTML元素的操作,以及对CSS样式的操作.其主要应用知识如下图: 通过对DOM的基本了解,还要通过代码实现对DOM的操作. 1.childNodes + nodeType 与children的区别 <ul id= "ull"> <li>1</li> <li>2</li> <li>3&l

JavaScript学习笔记——对象基础

javascript对象基础 一.名词解释: 1.基于对象 一切皆对象,以对象的概念来编程. 2.面向对象编程(oop Object oriented programming) A.对象 就是人们要研究的任何事物,不仅能表示具体事物,还能表示抽象的规则,计划或事件. 属性的无序集合,每个属性可以存一个值(原始值,对象,函数) B.对象的属性和行为 属性:用数据值来描述他的状态 行为:用来改变对象行为的方法 C.类 具有相同或相似的性质的对象的抽象就是类.对象的抽象,就是类,类的具体化(实例化)

[Javascript]类数组对象为什么不能用for in进行遍历

上来说重点,再废话 类数组对象不能使用for(var key in  elements)进行遍历,这是因为类数组的最后一个哈希的键值对是length:n   n代表数组长度 在Javascript中,我们在DOM树上面获取页面的元素, 例如使用var emls=getElementsByTagName () var emls=querySelectedAll() 获得的elements包含多个dom元素,在学习的过程中,我没有使用for(var i=0;i<elements.length;i++

javascript 类数组对象

原文:https://segmentfault.com/a/1190000000415572 定义: 拥有length属性,其他属性(索引)为非负整数(对象中的所有会被当做字符串来处理,这里你可以当做是个非负整数串来理解) 不具有数组所具有的方法 类数组示例: var a = {'1':'gg','2':'love','4':'meimei',length:5}; Array.prototype.join.call(a,'+');//'+gg+love++meimei' 非类数组示例: var

Java私人学习笔记——第4章 类和对象基础

4.1 面向对象基础 4.1.2 面向对象的基本特征 1.封装性     2.继承性     3.多态性 4.2 Java类和对象 4.2.1 类的定义 类的定义包括类声明和类体的定义: 1.类声明 [public][abstract | final]class ClassName[extends SuperClass][implements InterfaceNameList]{ //成员变量声明 //成员方法声明 } 抽象类不能实例化,final最终类不能被继承: 4.2.2 对象的使用 引

类 和 对象 基础

面向对象基础: 1 什么是面向对象? 指的是一种编程思想 面向过程编程: 核心是'过程'二字,过程指的是做事情的步骤,即先做什么后做什么 基于该编程思想编写程序,好比一条工厂流水线,一种机械式的思维方式. 优点: 逻辑清晰,复杂的问题流程化,进而简单化. 缺点: 可扩展性差. 面向对象编程: 核心是'对象'二字,对象指的是特征与技能的结合体. 基于该编程思想编写程序,好比在创造世界,一种上帝式的思维方式. 优点: 可扩展性强,已于维护, 缺点: 编写程序的复杂程度远高于面向过程的编程. 优先使用