/**
* 工厂方法:
* 存在问题:重复创建对象eat
*/
function CreatePeople(name){
var people=new Object();
people.name=name;
people.eat=function(){
alert(this.name+' is eating !!')
};
return people;
}
/**
* 构造函数法:
* 存在问题:重复创建对象eat
* 使用new 来创建对象,如:var p=new People('saber')
* 在执行第一句代码前,先创建一个对象(并返回,所以构造函数最后无须return),只有用this才能访问该对象,
*
*/
function People(name){
this.name=name;
this.eat=function(){
alert(this.name+' is eating !!')
};
}
/**
* 混合的构造函数/原型方式(推荐)
*/
var People1=function (name){
this.name=name;
}
People1.prototype={
eat:function(){
alert(this.name+' is eating !')
}
}
/* 自定义构造函数为:initialize
* 在使用new创建对象的时候,执行initialize函数,
*/
var People11=function (){
this.initialize.apply(this, arguments);
}
People11.prototype={
initialize:function(name){
this.name=name;
alert(' Initializing Ok !!');
},
eat:function(){
alert(this.name+' is eating !')
}
}
/* 有以上基础,如果我们要以一种统一的方式来定义类,该如何呢?
* 像java中定义类都采用Class关键字一样,而在JS中,没有类这个概念,
* 那么我们首先声明一个对象MyClass
*/
var MyClass=function(){
return function(){//闭包
this.initialize.apply(this, arguments);
}
}
/*
* 定义类:
*/
var ClassOne=MyClass();
ClassOne.prototype={
initialize:function(name){
this.name=name;
alert(this.name+' initializing Ok !')
},
methodOne:function(){
alert("My name is:" + this.name);
}
}
var ClassTwo=MyClass();
ClassTwo.prototype={
initialize:function(name){
this.name=name;
},
methodTwo:function(){
alert("My name is:" + this.name);
}
}
/**
* 采用prototype.js,它的方法和我们上边的一样:
* var Class = {
* create: function() {
* return function() {
* this.initialize.apply(this, arguments);
* }
* }
*}
*/
var People2=Class.create();
People2.prototype={
//自定义的构造函数:initialize
initialize:function(name,sex){
this.name=name;
this.sex=sex;
},
eat:function(){
alert(this.name+' is eating ');
},
showSex:function (){
alert(this.name+'\'s sex is :'+this.sex);
}
}
分享到:
相关推荐
在此之前,JavaScript中模拟类主要通过原型链来实现,而ES6中的class为面向对象编程(OOP)提供了一种更简洁、更直观的语法。 在ES6之前,JavaScript本身没有类的概念,它是基于原型的语言。原型对象的属性可以被新...
本文将详细解释三种在JavaScript中定义类的方法:构造函数法、Object.create()法以及极简主义法。 1. 构造函数法 构造函数法是最常见的模拟类的方式,通过使用函数作为类的模板。构造函数通常以大写字母开头,表示...
ES6中引入了class关键字和extends关键字,它们提供了一种更加直观和面向对象的方式来定义和继承类,使得JavaScript的面向对象编程更加接近传统面向对象语言的模式。通过class关键字定义的类,其内部的构造函数方法...
在讨论JavaScript中定义对象的几种方式之前,我们先理解一下JavaScript中的对象到底是什么。JavaScript是一种基于原型的编程语言,对象是其核心概念之一。对象可以被视为一个容器,存储各种键值对集合,键为属性名,...
在JavaScript中,可以使用类(Class)来实现面向对象编程(Object Oriented Programming)。不过,JavaScript中的类与Java中的有所不同,其相应的定义和使用也不一样。 JavaScript中类的定义 在JavaScript中,所有从同一...
在类定义中,以`@`开头的方法是类方法,而没有`@`的则是实例方法。这种区分使得代码逻辑更加明确,易于理解和维护。 ```javascript MyClass = JS.Class({ @staticMethod: function() { // 类方法 }, ...
在 JavaScript 中,类继承可以使用 `class Weapon extends Item` 的方式,而在 C# 中,使用 `public class Weapon : Item` 的方式。 导入函数库方面,JavaScript 使用 “Import” 关键字,而 C# 使用 “using” ...
### JavaScript给元素添加多个class的简洁实现 #### 概述 在Web开发中,通过JavaScript动态地为HTML元素添加或删除CSS类名是一项常见的需求。本文档将详细介绍如何使用JavaScript来给HTML元素添加多个class,并...
在JavaScript的ES6标准中,引入了`Class`语法,这是一种更加面向对象的代码书写方式。尽管`Class`看似一种全新的结构,但它本质上仍然是基于原型(prototype)的,可以说是一种语法糖,使得对象的创建和操作更加直观...
标题“javascript调用delphi中的函数”涉及到的技术领域是跨语言通信,具体是JavaScript与Delphi之间的交互。这种交互通常发生在Web应用程序与桌面应用程序的集成,或者在浏览器扩展和本地资源之间。以下是对这一...
本教程将详细介绍 JavaScript 中支持面向对象的基础知识,包括定义类、使用 new 操作符获得实例、引用对象的属性和方法等。 6.1 JavaScript 中支持面向对象的基础 在面向对象的思想中,类是一个抽象的概念,表示了...
通过Emscripten编译器,可以将C++编译成WASM,然后通过WebIDL定义接口,使JavaScript可以调用C++函数。 总结,JavaScript调用C++函数涉及到语言间通信的复杂性,但通过ActiveX控件、NPAPI插件或现代的WebAssembly...
在 JavaScript 中,类的定义使用 `class` 关键字。然而,由于 JavaScript 的历史,早期的类是通过函数来模拟的。例如: ```javascript function WuYouUser() { this.Name; } ``` 在上面的例子中,`WuYouUser`...
本文实例讲述了ES6 javascript中Class类继承用法。分享给大家供大家参考,具体如下: 1. 基本用法 Class 之间可以通过extends关键字实现继承, 这比 ES5 的通过修改原型链实现继承, 要清晰和方便很多。 class ...
JavaScript的基础包括变量、数据类型(如字符串、数字、布尔值、null和undefined)、操作符(如算术、比较和逻辑操作符)、流程控制(如条件语句if...else和switch,以及循环for和while)以及函数定义和调用。...
在JavaScript中,定义类的方法多种多样,这使得开发者可以根据需求选择最合适的方式来创建对象。以下是几种主要的方法: 1. **工厂方式**: 工厂模式是一种创建对象的模式,通过函数来模拟类的概念。在JavaScript...
在 JavaScript 中,prototype 是一个非常重要的概念,它提供了一套面向对象编程的基础设施,允许开发者定义对象类型和实现继承。下面我们将详细介绍如何使用 prototype 定义对象类型。 一、什么是 Prototype? 在 ...