/**
* 工厂方法:
* 存在问题:重复创建对象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定义类(class)的三种方法详解,本文讲解了构造函数法、Object.create()法、极简主义法三种方法,需要的朋友可以参考下
在JavaScript中,可以使用类(Class)来实现面向对象编程(Object Oriented Programming)。不过,JavaScript中的类与Java中的有所不同,其相应的定义和使用也不一样。 JavaScript中类的定义 在JavaScript中,所有从同一...
它没有访问控制符,它没有定义类的关键字class,它没有支持继承的extend或冒号,它也没有用来支持虚函数的virtual,不过,Javascript是一门灵活的语言,下面我们就看看没有关键字class的Javascript如何实现类定义,...
ES6中的类(Class)示例详解 类的基本语法 ES6提供了更接近面向对象(注意:javascript本质上是基于对象的语言)语言的写法,引入了Class(类)这个概念,作为对象的模板。通过class关键字,可以定义类。 基本上...
本文实例讲述了ES6 javascript中Class类继承用法。分享给大家供大家参考,具体如下: 1. 基本用法 Class 之间可以通过extends关键字实现继承, 这比 ES5 的通过修改原型链实现继承, 要清晰和方便很多。 class ...
本文实例讲述了ES6 javascript中class静态方法、属性与实例属性用法。分享给大家供大家参考,具体如下: 类相当于实例的原型, 所有在类中定义的方法, 都会被实例继承。 如果在一个方法前, 加上static关键字, 就...
类的定义通过向Class.new()方法亦或是Parent.extend()方法中传入参数来进行,形如下面的定义: { prop1 : null, prop2 : null, ... propN : null, initialize : function(args){/*initialize 方式是类在实例化...
From: JavaEye.com prototype提供了一套JavaScript面向对象基础设施,我们可以使用它来进行面向对象编程,定义对象类型方式如下: var Person = Class.create(); Person.prototype = { initialize : ...
用 JavaScript 定义你的类。 安装 $ npm install -g bower $ bower install active-class 或者只是使用dist目录中的捆绑版本。 用法 简单继承 要创建新类,请使用以下语法: var MyClass = Class(prototype); ...
笔者历经多年javascript的开发,痛彻体会javascript面向对象编程的不便性,精心制作了一个类的定义与继承功能的js,实现了在javascript中对类的定义、继承、封装机制,主要功能特征包括: 一、 统一了类定义的语法...
主要介绍了原生JavaScript之es6中Class的用法,结合实例形式对比分析了es6与es5相关class定义、区别及使用技巧,需要的朋友可以参考下
Class.js是一种轻量级且经过优化的库,用于使用简洁的语法在Javascript中定义名称空间,类和继承。 定义一个命名空间 namespace("ui.controls.Box"); ui.controls.Box = function(){} 在命名空间中定义一个空的...
Calculate1.java 计算浮点数运算结果并调用页面中JavaScript函数的Applet。 Calculate1.class Calculate1.java的字节码文件。 第16章(\c16) 示例描述:介绍JavaScript访问本地文件的各种方法。 16.1....
It documents every class, object, constructor, method, function, property, and constant defined by JavaScript 1.5 and ECMAScript version 3. Part IV is a reference for client-side JavaScript, ...
主要介绍了JavaScript之class继承,新的关键字class从ES6开始正式被引入到JavaScript中。class的目的就是让定义类更简单,有兴趣的可以了解一下
页面添加水印的方法有很多,以下举例使用class定义的方法进行水印内容渲染: 1、新建文件:WatermarkClass.js export default class WatermarkClass { constructor({id="watermarkID", str = "", fontSize = 18...
使用此库,Knockout 将查找data-class属性(默认情况下)并使用其值键入包含每个绑定定义的 JavaScript 对象。 这使您可以将绑定规范从标记中移到 JavaScript 代码层中。 该库使用了 Knockout 2.0+ 中的...
本文实例分析了javascript面向对象之定义成员方法。分享给大家供大家参考。具体如下: javascript面向对象,定义成员方法如下所示: 代码如下:[removed] function Person(name,age){ this.name = name; this....