创建类的方法一:工厂方法方式
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中除了最基础的字面量语法之外的其他创建对象的方法。这里我们将深入探讨几种常见的创建对象的方式。 1. **构造函数**: JavaScript中的...
本文将深入探讨JavaScript中的对象创建方式,包括类和继承的概念。 首先,让我们从最基础的创建对象的方式开始。在JavaScript中,可以使用字面量语法来创建一个简单的对象: ```javascript var obj = { name: '...
这是最简单直接的对象创建方式,通过大括号 `{}` 将属性和方法定义在一个对象中。例如: ```javascript var person = { name: "John Doe", age: 30, sayHello: function() { console.log("Hello, my name is " ...
如资源名,使用JAVASCRIPT动态创建一个Select元素和text元素
这篇博文主要探讨了JavaScript创建对象的几种常见方式,这对于理解和掌握JavaScript面向对象编程至关重要。在实际开发中,了解并灵活运用这些方法能够提高代码的可读性和可维护性。下面,我们将详细讲解标题中提到的...
动态创建表格的两种方式 1. 使用 `appendChild()` 方法 `appendChild()` 方法可以将新创建的行或单元格添加到表格中。但是,这种方法在 IE 浏览器上可能会出现问题。 2. 使用 `insertRow()` 和 `insertCell()` ...
使用javascript脚本轻松快捷创建文件夹 很实用
工厂模式是最早期的对象创建方式之一,它通过一个函数来创建对象,并返回新创建的对象。这种方法的核心是利用函数封装创建对象的细节,然后通过返回值来创建对象实例。工厂模式的优点是解决了创建多个具有相同属性和...
在JavaScript中实现类的方式主要有几种,包括对象字面量(Object Literal)、构造函数(Constructor)、原型链(Prototype Chain)以及ES6引入的类语法。每种方式都有其适用的场景和特点,理解它们有助于我们更好地...
JavaScript中最基础的类创建方式就是使用函数构造器。通过`function`关键字定义一个函数,并通过`new`操作符来实例化对象。例如: ```javascript function Person(name) { this.name = name; } var person = ...
javascript对象创建方法总结,通过这些方法的总结,可以对对象有了更深一步的了解,也加深了对对象的巩固认识。
以上就是JavaScript创建对象的六种常见方式,每种都有其适用场景和优缺点。理解并熟练掌握这些方法,能够帮助你编写出更加灵活、可维护的代码。在实际项目中,根据需求选择合适的方法,可以提升代码质量和效率。
总之,JavaScript类提供了一种组织和抽象代码的方式,通过类我们可以创建具有特定属性和方法的对象。了解和熟练掌握JavaScript类的概念和用法,对于进行软件开发和程序设计至关重要,尤其是在构建复杂应用时。
Javascript动态创建表格 兼容google浏览器、360,ie等浏览器,很实用
这是一种推荐的创建方式,因为它能够充分利用原型链的优势,同时确保每个实例拥有自己独立的属性。 ```javascript function Person() { this.name = 'James'; this.age = 10; } Person.prototype.say = function ...
总结以上四种方式,在JavaScript中定义类或函数,可以根据实际的应用场景和需求,选择最合适的方式来实现对象的创建和管理。工厂方式适合创建不需要保持类型统一的对象;构造函数方式则更符合面向对象的原则;原型...
在网页开发中,jQuery 和 JavaScript 都提供了创建和操作 DOM 节点的方法,但它们在语法和效率上存在一定的差异。本篇文章主要探讨了两者在创建节点方面的区别。 首先,我们来看一下创建一个 h1 标签并将其作为 div...
使用JavaScript和DOM动态创建表格
一个纯javascript创建缩图 大家赶紧来下