javascript面向对象的程序设计记录笔记4

雨下听风      2022-02-11     233

关键词:

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

  

function Person(name, age, job){
  this.name = name;
  this.age = age;
  this.job = job;
  this.friends = [‘Shelby‘, ‘Court‘];    
}

Person.prototype = {
  connstructor: Person,
  sayName: function(){
    return this.name;
  }    
}
 var person1 = new Person(‘Tom‘, 23, ‘software engineer‘);
 var person2 = new Person(‘Jack‘, 24, ‘doctor‘ );
 person1.friend.push(‘Var‘);

console.log(person1.friend); // 输出‘Shelby‘, ‘Court‘,‘Var’
console.log(person2.friend); //  输出‘Shelby‘, ‘Court‘,
console.log(person1.friend === person2.friend); // false
console.log(person1.sayName === person2.sayName); // true

 由于sayName方法都属于prototype属性上,所以person1.sayName 与 person2.sayName相同,都引用同一地址。

动态原型模式

function Person(name, age){
    this.name = name;
    this.age = age;
    if (typeof this.sayName === ‘fucntion‘) {
     Person.prototype.sayName = function() {
         alert(this.name);
    }   
}    

// 当第一次创建Person实例对象的时候,由于当前不存在syaName方法,则会执行if中的语法块,将sayName方法放到共享对象prototype上, 当之后实例Person对象的时候,由于已经存在sayName属性,则不会进行创建。

 

寄生构造函数:(寄生构造函数与工厂模式类似,区别在于多了一个new标示)

function Person(name, age){
    var o = new Object();
    o.name = name;
    o.age = age;
    o.sayName = function(){
        alert(this.name);
    }
    return o;
}  

  

稳妥构造函数模式

  稳妥对象:所谓的稳妥对象,指的是没有公共属性,而且其他方法也不用引用this对象。稳妥对象最适合在一些安全的环境中,或防止数据被其他应用改动时使用。

 

javascript面向对象的程序设计记录笔记5

继承:  原型链继承  functionSuperType(){    this.propperty=true;  }  Supertype.prototype.getSuperValue=function(){    returnthis.propperty;  }  functionSubType(){    this.subproperty=false;  }  //继承了SubType&n 查看详情

javascript面向对象的程序设计记录笔记2(设计模式)

以下为JavaScript高级程序设计第六章面向对象的程序设计6.2节创建对象(设计模式部分)读书记录。1)工厂模式:  functioncreatePerson(name,age,sex){    varo=newObejct();    o.age=age;    o.sex=sex;    o.name=name;    r... 查看详情

《javascript面向对象编程指南》读书笔记②

概述《JavaScript面向对象编程指南》读书笔记①这里只记录一下我看JavaScript面向对象编程指南记录下的一些东西。那些简单的知识我没有记录,我只记录几个容易遗漏的或者精彩的知识点,以后再看也可当做拾遗之用!内容1.枚... 查看详情

《javascript面向对象编程指南》读书笔记①

概述JavaScript快忘完了,想看一本专业书拾遗,所以看了这本《JavaScript面向对象编程指南》。个人觉得这本书讲的很透彻很易懂,一些原来有疑惑的地方在这本书里面豁然开朗,看起来非常爽!现在我只记录一下我看这本书记录... 查看详情

读书笔记-javascript面向对象编程

...回顾历史1.2变革之风1.3分析现状1.4展望未来1.5面向对象的程序设计  1.5.1对象(属性和方法的集合)  1.5.2类(相似对象的共同特征,如麻雀、老鹰都是鸟类)  1.5.3封装(将属性和方法集合起来,也有封闭作用域的概念,... 查看详情

javascript面向对象编程指南——学习笔记1

...回顾历史1.2变革之风1.3分析现状1.4展望未来1.5面向对象的程序设计  1.5.1对象(属性和方法的集合)  1.5.2类(相似对象的共同特征,如麻雀、老鹰都是鸟类)  1.5.3封装(将属性和方法集合起来,也有封闭作用域的概念,... 查看详情

javascript学习笔记八:面向对象的程序设计

1.ECMA-262把对象定义为:无序属性的集合,其属性可以包含基本值,对象和函数。每个对象都是基于一个引用类型创建的。2.属性有两种:数据属性和访问器属性,其中访问器属性不能直接定义,必须使用Object.defineProperty()来定义... 查看详情

js-javascript高级程序设计学习笔记4

第六章面向对象的程序设计1、面向对象的语言有一个标志,那就是它们都有类的概念,而通过类可以创建任意多个具有相同属性和方法的对象。如python。ES中没有类的概念。2、ES的对象可以想象成散列表:无非就是一组名值对,... 查看详情

javascript高级程序设计笔记之面向对象

  说起面向对象,大部分程序员首先会想到类。通过类可以创建许多具有共同属性以及方法的实例或者说对象。但是JavaScript并没有类的概念,而且在JavaScript中几乎一切皆对象,问题来了,JavaScript中如何面向对象?  JavaScrip... 查看详情

javascript高级程序设计笔记之面向对象

   说起面向对象,大部分程序员首先会想到类。通过类可以创建许多具有共同属性以及方法的实例或者说对象。但是JavaScript并没有类的概念,而且在JavaScript中几乎一切皆对象,问题来了,JavaScript中如何面向对象?  Jav... 查看详情

javascript高级编程笔记05(面向对象)

面向对象设计es中有两种属性:数据属性和访问器属性数据属性:数据属性包含一个数据值的位置,在这个位置可以读取和写入值,数据属性有4个描述其行为的特性[[Configurable]]:表示能否通过delete删除属性从而重新第一属性,能否修改... 查看详情

javascript笔记3-面向对象的程序设计-创建对象

javascript的对象:无序属性的集合,而每个属性可以包含基本值、对象或者函数。举例:1varperson=newObject();2person.name="Nicholas";3person.age=29;4person.job="SoftwareEngineer";5person.sayName=function(){6alert(this.name);7};89person.sayNa 查看详情

javascript笔记3-面向对象的程序设计-创建对象

javascript的对象:无序属性的集合,而每个属性可以包含基本值、对象或者函数。举例:1varperson=newObject();2person.name="Nicholas";3person.age=29;4person.job="SoftwareEngineer";5person.sayName=function(){6alert(this.name);7};89person.sayNa 查看详情

[笔记]《javascript高级程序设计》-面向对象的程序设计

    ECMA-262把对象定义为:“无序属性的集合,其属性可以包含基本值、对象或函数”。一、理解对象    创建自定义对象的最简单方式就是创建一个Object的实例,然后再为它添加属性和方法。1属性类... 查看详情

《javascript设计模式与开发》笔记1.面向对象的javascript

 多态 封装 原型模式 基于原型模式的继承javascript对象1.多态多态的实际含义是:同一操作作用于不同的对象上面,可以产生不同的解释和不同的执行结果。换句话说,给不同的对象发哦少年宫同一个消息的时候,... 查看详情

《javascript面向对象编程指南》读书笔记—function

...数据类型,它实际上是一种对象。4.2.3.3call()和apply()1.在JavaScript中,每个函数都有call()和apply()两个方法。这两个方法的两个功能:(1)用他们来触发函数,并指定相关的调用参数。(2)他可以让一个对象去“借用“另一... 查看详情

javascript学习笔记3——创建对象

本文主要是对《JavaScript高级程序设计》第六章(面向对象的程序设计)的总结,书上的这章至少看了4遍是有的。该章主要讲对象的创建与继承。其中创建对象和继承方式至少6种,再加上一些方法属性,很容易搞得晕头转向的。... 查看详情

《javascript设计模式与开发》笔记4.闭包

 1.变量的作用域 2.变量的生存周期 3.闭包更多作用1.封装变量2.延续局部变量寿命 4.闭包和面向对象设计 5.闭包和内存管理1.变量的作用域varfunc=function(){vara=1;}func();console.log(a);//输出undefinedvara=1;fun1=function(){varb=2... 查看详情