JavaScript学习进程(2)

创建对象

1.工厂模式

例子:

function createPerson(name , age , job){
var o = new Object();
o.name = name;
o.age = age;
o.job = job;
o.sayName = function(){
alert(this.name) ;
};
return o;
}
var  person1 = createPerson("Nichilos","29","Soft Engineer");
var  person2 = createPerson("Grey","27","Doctor");

2.构造函数模式

 构造函数与其他函数唯一的区别就是调用它们的方式不同

例子

function Person(name , age , job){
     this.name = name;
     this.age = age;
     this.job = job;
     this.sayName = function(){
         alert(this.name);
      };
 }
   //当做构造函数调用
   var person1 = new Person("Nicholos","29","Software Engineer");
   person1.sayName();//"Nicholos"
   //作为普通函数调用
   Person("Grey","29","Software Engineer");//添加到window
   window.sayName();//"Grey"
   //在另一个对象的作用域中调用
   var o = new Object();
   Person.call(o,"Kreis","24","Nurse");
   o.sayName();//"Kreis"

 特点1:没有显示的创建对象;

特点2:直接将属性和方法赋给了this对象;

特点3:没有return语句。

存在的问题:

   alert(person1.sayName==person2.sayName); //false

  将函数定义转移到构造函数之外

function Person(name , age ,job){
     this.name = name;
     this.age = age;
     this.job = job;
     this.sayName = sayName;
}
     function  sayName(){
          alert(this.name);
 }
   var  person1 = new Person("Nichilos","29","Soft Engineer");
   var  person2 = new Person("Grey","27","Doctor");

3.原型模式

function Person(){
}
Person.prototype.name = "Nicholos";
Person.prototype.age = "29";
Person.prototype.job = "Software Engineer";
Person.prototype.sayName = function(){
            alert(this.name);
};
var person1 = new Person();
person1.name = "Grey";
alert(person1.name);//"Grey"
person1.sayName();// "Nicholos"
var person2 = new Person();
alert(person2.name);//"Nicholos""
alert(person1.sayName == person2.sayName);//ture

4.组合使用构造函数和原型函数模式

function Person(name , age ,job){
this.name = name;
this.age = age;
this.job = job;
this.friends = ["Shelby","Court"];}
Person.prototype = {
constructor : Person,
sayName : function(){
alert(this.name);
}
}
var  person1 = new Person("Nichilos","29","Soft Engineer");
var  person2 = new Person("Grey","27","Doctor");
person1.friends.push("Van");
alert(person1.friends);//"Shelby","Court","Van"
alert(person2.friends);//"Shelby","Court"
alert(person1.friends == person2.friends);//false
alert(person1.sayName == person2.sayName);//true

  

时间: 2024-10-18 00:46:00

JavaScript学习进程(2)的相关文章

JavaScript学习进程(1)

基本包装类型:Boolean,Number,String. 在这儿主要讲String的方法: 1.字符方法 String的字符方法有charAt()和charCodeAt(),这两种方法都只接受一个参数(基于0的位置参数),charAt()返回这个位置上的字符,charCodeAt()返回字符编码: 例子: var stringValue = "hello world"; alert(stringValue.charAt(1));//输出字母e alert(stringValue.ch

JavaScript学习08 Cookie对象

JavaScript学习08 Cookie对象 JavaScript Cookie Cookie对象: Cookie是一种以文件的形式保存在客户端硬盘的Cookies文件夹中的用户数据信息(Cookie数据). Cookie文件由所访问的Web站点建立,以长久的保存客户端与Web站点间的会话数据,并且该Cookie数据只允许被所访问的Web站点进行读取. Cookie文件的格式: NS:Cookie.txt IE:用户名@域名.txt 有两种类型的cookie: (1)持久性cookie,会被存

Javascript学习--------详解window窗口对象

对话框: 警告对话框:alert(): 语法:window.alert(src)或者alert(src); 询问回答对话框:confirm(): 语法:window.confrim(question)或者confrim(question); 单击确认,返回true: 单击取消,返回false 提示对话框:prompt(): 语法:window.prompt([showtxt],[defaultTxt])或者prompt([showtxt],[defaultTxt]); 单击确认,返回输入的文本:

JavaScript学习笔记【3】数组、函数、服务器端JavaScript概述

笔记来自<JavaScript权威指南(第六版)> 包含的内容: 数组 函数 服务器端JavaScript概述 数组 数组是动态的:根据需要它们会增长或缩减,并且在创建数组时无须声明一个固定的大小或在数组大小变化时无须重新分配空间. 数组可能是稀疏的:索引不一定要连续的,它们之间可以有空缺. 通常,数组的实现是经过优化的,用数字索引来访问数组元素一般来说比访问常规的对象属性要快很多. 数组继承自Array.prototype中的属性,它定义了一套丰富的数组操作方法. 如果省略数组直接量中的某个

javascript学习

javascript 学习 title: Javascripttags: javascript,学习grammar_cjkRuby: true--- 定义变量 三种形式 var name; var name = "zhang san"; var name; name = "zhang san"; Javascript 的数据类型 6种数据类型 字符串单引号或双引号 var name = "zhang san"; var name = 'zhang

Javascript 学习笔记 2: 标识语句

可以在任何语句声明之前使用唯一标识(identifier)和冒号(:)用来标记该语句: identifier: statement 这样,你可以在程序的任何其他地方通过标识来使用这个语句.即使在语句内部也可以使用该语句的标识(例如:循环语句和条件语句).当在一个循环语句前添加一个标识,你可以在语句内部通过break 标识来退出当前循环,也可以通过continue标识来继续执行该语句.例如: mainloop: while(token != null) { // Code omitted... c

JavaScript学习之DIV层与图像

DIV层与图像 一.设计一个可定位的层 1.设置位置(position)和大小 (1)绝对定位(absolute):以页面边框为参照,只要设置好绝对位置,那么元素的位置会始终固定在距离边框某个位置的距离. 绝对定位有两个属性:left和top,分别是距离网页左边和网页顶部的绝对位置,可借助style属性直接设置: style="position:absolute;left:距离左边距离;top:距离顶部距离" (2)相对定位(relative):需要有一个参照元素,设置好相对位置和参照

JavaScript学习05 定时器

JavaScript学习05 定时器 定时器1 用以指定在一段特定的时间后执行某段程序. setTimeout(): 格式:[定时器对象名=] setTimeout(“<表达式>”,毫秒) 功能:执行<表达式>一次. 例子: <!DOCTYPE html> <html> <head> <title>timer1.html</title> <meta http-equiv="keywords" co

Javascript学习--------认识window窗口对象

window对象: Window 对象表示浏览器中打开的窗口. 可以通过window对象设置窗口的大小,位置等. 还可以控制是否加载网页等. window对象集合: 集合 描述 frames[] 返回窗口中所有命名的框架. 该集合是 Window 对象的数组,每个 Window 对象在窗口中含有一个框架或 <iframe>.属性 frames.length 存放数组 frames[] 中含有的元素个数.注意,frames[] 数组中引用的框架可能还包括框架,它们自己也具有 frames[] 数