笔记:ECMA 工厂模型、构造模型、原型模型 (二)

如上图: 实例对象 原型对象 构造函数之间的关系

我们都知道,每添加一个Function,都会自带一个prototype属性指针,指向我们的实例对象!

每创建一个原型对象,默认会获得一个constructor(构造函数)属性,这个属性会指向prototype所在函数的指针

那么,三者之间转换关系呢,如上图可以知道

实例对象的prototype是原型对象

构造函数的prototype是原型对象

原型对象的constructor是构造函数

创建一个实力对象

var newObj = new ObjectFunction;

修改实例对象的属性内容,并删除属性内容,删除后,实力对象的属性值和原型对象中保持一致!

See Code~~

 1 var info = new Array("Kris","20150312",24);
 2 function person1(){};
 3 var pro = person1.prototype;    //创建原型对象
 4 pro.name =info[0];
 5 pro.idCard=info[1];
 6 pro.age=info[2];
 7
 8 pro.Train= function(){
 9 if(this.name =="Kris"){
10     if(this.idCard == info[1]){
11         alert("身份证验证成功,可以登机");
12     }
13     else{
14         alert("很抱歉,身份证验证失败!");
15     }
16 }
17 else{
18     alert("非权限用户!");
19 }
20 }
21 // pro.Train();   //登机成功
22
23 var proObj = new person1();
24 // alert(pro.isPrototypeOf(proObj));
25 proObj.idCard = "007";
26 alert(pro.idCard);  //实例对象的值并没有修改
27 proObj.Train();//登录失败
28 delete proObj.idCard;  //删除属性的值
29 proObj.Train();//登录成功  idCard值恢复为原型对象中的属性值
时间: 2024-10-26 07:00:28

笔记:ECMA 工厂模型、构造模型、原型模型 (二)的相关文章

笔记:ECMA 工厂模型、构造模型、原型模型 (一)

/**************面向对象模型 创建对象*********************//*工厂模式*/ function CreateObj (name,sex,sayName){ var obj = new Object(); obj.name = name; obj.sex = sex; obj.sayName = function(){ alert(this.name); } return obj; } var person = CreateObj("工厂模型createName

软件工程之快速原型模型

引入快速原型模型的原因: 如果用传统的方法开发一个系统,在初期需求方面的工作时,无论和用户做如何详细的沟通,用户都能难对自己的需求表达准确.全面,因为用户和开发团队双方的知识领域有很大差异. 开发人员懂技术,业务人员了解业务和客户层面,导致沟通需求方面时存在很多问题,理解不一致. 从而导致已经完成大半的软件产品极可能被返工,加大了软件产品开发的时间和成本.而时间和成本是软件开发中最重要的,所以需要引入可以克服这些缺点的快速原型模型. 快速原型模型: 结构: 结构优点:在结构上看,快速原型模型是不

JS面向对象——组合使用构造函数模型与原型模型

该模型为创建自定义类型最常用的方式. <!DOCTYPE html> <html> <head> <title>组合使用构造函数模型和原型模型</title> <script type="text/javascript"> //组合使用构造函数模型和原型模型——构造函数模型用于定义实例属性,原型模型用于定义方法和共享属性. function Student(name,age,sex){ this.name=name

快速原型模型

快速原型模型(Rapid Prototype Model) 快速原型模型的第一步是建造一个快速原型,实现客户或未来的用户与系统的交互,用户或客户对原型进行评价,进一步细化待开发软件的需求.通过逐步调整原型使其满足客户的要求,开发人员可以确定客户的真正需求是什么:第二步则在第一步的基础上开发客户满意的软件产品. 显然,快速原型方法可以克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险,具有显著的效果. 快速原型的关键在于尽可能快速地建造出软件原型,一旦确定了客户的真正需求,所建造的原型将被丢

C++ Primer 学习笔记_79_模板与泛型编程 --模板编译模型

模板与泛型编程 --模板编译模型 引言: 当编译器看到模板定义的时候,它不立即产生代码.只有在用到模板时,如果调用了函数模板或定义了模板的对象的时候,编译器才产生特定类型的模板实例. 一般而言,当调用函数时[不是模板],编译器只需看到函数的声明.类似的,定义类类型的对象时,类定义必须可用,但成员函数的定义不是必须存在的.因此,应该将类定义和函数声明放在头文件中,而普通函数和类成员函数的定义放在源文件中. 模板则不同:要进行实例化,编译器必须能够访问定义模板的源代码.当调用函数模板或类模板的成员函

Away3D 学习笔记(一): 加载3DS格式的模型文件

加载外部的3DS文件分为两种: 1: 模型与贴图独立于程序的,也就是从外部的文件夹中读取 1 private function load3DSFile():Loader3D 2 { 3 loader = new Loader3D(); 4 loader.addEventListener(LoaderEvent.RESOURCE_COMPLETE,onLoadComplete); 5 loader.addEventListener(AssetEvent.ASSET_COMPLETE,onAsset

软件开发过程-------瀑布模型、原型模型、螺旋模型、敏捷开发模型

瀑布模型: 计划 → 需求分析 →  设计 →  编码 →  测试 →  运行维护 特点:①软件开发的各项活动严格按照线性方式进行.       ②当前活动接受上一项活动的工作结果.           ③当前活动的工作结果需要进行验证. 缺点:①由于开发模型是线性的,增加了开发的风险.           ②早期的错误可能要等到开发后期的阶段才能发现. 原型模型: 客户与开发公司紧密联系,开发周期长.开发会受到需求变更的影响. 特征:①实现客户与系统的交互. ② 进一步细化待开发软件需求. ③

软件开发生命周期模型 瀑布模型、增量模型、原型模型、螺旋模型、喷泉模型总结

在校期间学习过这些模型,现在来复习一下. 瀑布模型/改进的瀑布模型 虽然瀑布模型仍然存在很多的问题有待解决,但瀑布模型仍然是最基本的和最效的一种可供选择的软件开发生命周期模型.瀑布模型要求软件开发严格按照需求 ->分析->设计->编码->测试的阶段进行,每一个阶段都可以定义明确的产出物和验证准则.瀑布模型在每一个阶段完成后都可以 组织相关的评审和验证,只有在评审通过后才能够进入到下一个阶段. 由于需要对每一个阶段进行验证,瀑布模型要求每一个阶段都有明确的文档产出,对于严格的瀑布模型

PyTorch 模型构造

记录几种模型构造的方法: 继承Module类来构造模型 Module是所有神经网络模块的基类,通过继承它来得到我们需要的模型,通常我们需要重载Module类的__init__函数和forward函数. 实例 import torch.nn as nn import torch.nn.functional as F class Model(nn.Module): def __init__(self): super(Model, self).__init__() self.conv1 = nn.Co

ThinkPHP 学习笔记 ( 四 ) 数据库操作之关联模型 ( RelationMondel ) 和高级模型 ( AdvModel )

一.关联模型 ( RelationMondel ) 1.数据查询 ① HAS_ONE 查询 创建两张数据表评论表和文章表: tpk_comment , tpk_article .评论和文章的对应关系为,一条评论 id 对应一篇文章,为 ONE_TO_ONE 关系 ( 一对一 ).评论表的结构为: 其中 aid 字段与文章表的 id 字段对应.打开自定义模型 ArticleModel,让模型继承于 RelationModel,然后定义成员属性 $_link,代码: ArticleModel.cla