`
luogankun
  • 浏览: 19421 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JavaScript类的创建方式

阅读更多

创建类的方法一:工厂方法方式

function createObject(username ,password) {
	var obj = new Object();
	obj.username = username;
	obj.password = password;
	obj.get = function(){    //将匿名函数赋值给get
		alert("username: " + this.username    + "\npassword:" + this.password);}
	  return obj;//通过return 返回回去所创建的对象
}

var o = createObject("lgk","111");
o.get();

 

 

创建类的方法二:构造方法方式

function Person(username,password) {
	this.username = username;
	this.password = password;

	this.get = function() {
		alert("username: " + this.username + "\npassword:" + this.password);
	}
}

var person = new Person("lgk","123");
person.get();

 这两种方法都有一个共同点,那就是每生成一个对象都会生成一个方法的,在java中方法只生成一份的,怎么解决呢??

将方式提取放到外面去

 

 function get(){
	alert("username: " + this.username    + "\npassword:" + this.password);
  }

 function createObject(username ,password) {
	var obj = new Object();
	obj.username = username;
	obj.password = password;
	obj.get = get;
		
	return obj;  
}

var o = createObject("lgk","111");
o.get();  


function get(){
	alert("username: " + this.username + "\npassword:" + this.password);
}
	
function Person(username,password) {
	this.username = username;
	this.password = password;

	this.get = get;
}

var person = new Person("lgk","123");
person.get();

  这样就只生成一次方法了,但是随即又产生了一个新的问题,在面向对象的语言中,一般属性和方法都是不分开的,都是写在类中的,而上面的例子中把方法写到了类的外面去了,看上去似乎不符合面向对象的思想。我们可以采用后面的方法去解决这个问题。

 

类的创建方式三:原型方式

特点:属性和方法只产生一次

 function Person(){
 }

 Person.prototype.username = "lgk";
 Person.prototype.password = "123";
 Person.prototype.get = function() {
	alert("username:" + this.username + "\npassword:" + this.password);
 }

 var p1 = new Person();
 p1.username = "dd";
 p1.get();

 var p2 = new Person();
 p2.get();

 原型方式存在的弊端:

1、构造方式只能是空的,不能传递参数,要想改变参数只能通过先new出对象,然后通过js的晚绑定机制来实现

2、最致命的缺点是:当对象的属性值是引用类型的时候,第一个对象的属性发生变化后会反应到第二个对象的属性上去,因为他们使用的是同一份属性空间。

如:

 function Person(){
 }

 Person.prototype.username = new Array();
 Person.prototype.password = "123";
 Person.prototype.get = function() {
	alert("username:" + this.username + "\npassword:" + this.password);
 }

 var p1 = new Person();
 p1.username.push("dddd");
 p1.get();

 var p2 = new Person();
 p2.get();

 这时候p2的username属性也成了dddd了。

 

 

创建类的方法四:混合的构造方法与原型方式(强烈推荐)

function Person(username, password){
	this.username = username;
	this.password = password;
 }

 Person.prototype.get = function() {
	alert("username:" + this.username + "\npassword:" + this.password);
 }

 var p1 = new Person("lgk","1111");
 p1.get();

 var p2 = new Person("shzh","2222");
 p2.get();

 特点:

    属性采用构造方法方式定义,方法采用原型方式定义。每产生一个对象,它们拥有各自的属性,但是都共同拥有 一 份   方法。符合面向对象的思想。当对象中的属性是引用类型的时候,它们之间的属性也不会相互干扰。

缺点:类是属性和方法还是分开了

 

类的创建方式五:动态原型

function Person() {
	this.username = "lgk";
	this.password = "123";

	if(typeof Person.flag == "undefined")	{
		alert("executed");

		Person.prototype.get = function()		{
			alert("username: " + this.username + "\npassword: " + this.password);
		}

		Person.flag = true;
	}
}

var person = new Person();
var person2 = new Person();

person.get();
person2.get();

 特点:方法只拥有一份

分享到:
评论

相关推荐

    javascript创建对象的方式(二)

    这篇博客“javascript创建对象的方式(二)”可能详细介绍了在JavaScript中除了最基础的字面量语法之外的其他创建对象的方法。这里我们将深入探讨几种常见的创建对象的方式。 1. **构造函数**: JavaScript中的...

    javascript对象创建

    本文将深入探讨JavaScript中的对象创建方式,包括类和继承的概念。 首先,让我们从最基础的创建对象的方式开始。在JavaScript中,可以使用字面量语法来创建一个简单的对象: ```javascript var obj = { name: '...

    javascript创建对象的方式(三)

    这是最简单直接的对象创建方式,通过大括号 `{}` 将属性和方法定义在一个对象中。例如: ```javascript var person = { name: "John Doe", age: 30, sayHello: function() { console.log("Hello, my name is " ...

    JAVASCRIPT动态创建Select和Text元素

    如资源名,使用JAVASCRIPT动态创建一个Select元素和text元素

    javascript创建对象的方式(一)

    这篇博文主要探讨了JavaScript创建对象的几种常见方式,这对于理解和掌握JavaScript面向对象编程至关重要。在实际开发中,了解并灵活运用这些方法能够提高代码的可读性和可维护性。下面,我们将详细讲解标题中提到的...

    javascript动态创建表格

    动态创建表格的两种方式 1. 使用 `appendChild()` 方法 `appendChild()` 方法可以将新创建的行或单元格添加到表格中。但是,这种方法在 IE 浏览器上可能会出现问题。 2. 使用 `insertRow()` 和 `insertCell()` ...

    用javascript脚本创建文件夹

    使用javascript脚本轻松快捷创建文件夹 很实用

    在javascript中创建对象的各种模式解析

    工厂模式是最早期的对象创建方式之一,它通过一个函数来创建对象,并返回新创建的对象。这种方法的核心是利用函数封装创建对象的细节,然后通过返回值来创建对象实例。工厂模式的优点是解决了创建多个具有相同属性和...

    在JavaScript中实现类的方式探讨

    在JavaScript中实现类的方式主要有几种,包括对象字面量(Object Literal)、构造函数(Constructor)、原型链(Prototype Chain)以及ES6引入的类语法。每种方式都有其适用的场景和特点,理解它们有助于我们更好地...

    javascript写类方式之七

    JavaScript中最基础的类创建方式就是使用函数构造器。通过`function`关键字定义一个函数,并通过`new`操作符来实例化对象。例如: ```javascript function Person(name) { this.name = name; } var person = ...

    JavaScript对象创建总结

    javascript对象创建方法总结,通过这些方法的总结,可以对对象有了更深一步的了解,也加深了对对象的巩固认识。

    javascript创建对象的方式(四)

    以上就是JavaScript创建对象的六种常见方式,每种都有其适用场景和优缺点。理解并熟练掌握这些方法,能够帮助你编写出更加灵活、可维护的代码。在实际项目中,根据需求选择合适的方法,可以提升代码质量和效率。

    由浅到深了解JavaScript类

    总之,JavaScript类提供了一种组织和抽象代码的方式,通过类我们可以创建具有特定属性和方法的对象。了解和熟练掌握JavaScript类的概念和用法,对于进行软件开发和程序设计至关重要,尤其是在构建复杂应用时。

    Javascript动态创建表格

    Javascript动态创建表格 兼容google浏览器、360,ie等浏览器,很实用

    javascript面向对象创建对象的方式小结.docx

    这是一种推荐的创建方式,因为它能够充分利用原型链的优势,同时确保每个实例拥有自己独立的属性。 ```javascript function Person() { this.name = 'James'; this.age = 10; } Person.prototype.say = function ...

    JavaScript定义类或函数的几种方式小结

    总结以上四种方式,在JavaScript中定义类或函数,可以根据实际的应用场景和需求,选择最合适的方式来实现对象的创建和管理。工厂方式适合创建不需要保持类型统一的对象;构造函数方式则更符合面向对象的原则;原型...

    jQuery与JavaScript节点创建方法的对比.docx

    在网页开发中,jQuery 和 JavaScript 都提供了创建和操作 DOM 节点的方法,但它们在语法和效率上存在一定的差异。本篇文章主要探讨了两者在创建节点方面的区别。 首先,我们来看一下创建一个 h1 标签并将其作为 div...

    使用JavaScript和DOM动态创建表格

    使用JavaScript和DOM动态创建表格

    一个纯javascript创建缩图

    一个纯javascript创建缩图 大家赶紧来下

Global site tag (gtag.js) - Google Analytics