<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script>
//构造函数模式代码实战和总结 //1 , 用户床垫特定类型的对象
//2,JS构造函数比较特殊的地方 new
//3, 其他的语言里,比如php里人家实现,有一个关键字创建一个类
//4,此时的zaomen是一个构造函数,又充当类的概念
function zaomen(huawen){
if (!(this instanceof zaomen)) {
return new zaomen();
}
//定义私有变量
var _huawen = '普通';
//如果传递了参数 huawen
if(huawen){
_huawen = huawen;
}
this.suo='普通的';
this.huawen = _huawen;
this.create = function(){
return "【锁头】"+this.suo+"[花纹]"+this.huawen;
}
}; var xiaozhang = zaomen();
var a = xiaozhang.create();
alert('xiaozhang'+a);
var xiaoli =new zaomen('绚丽');
alert('xiaoli'+xiaoli.create());
//alert(a);弹出错误。因为此时create的 this.suo.. ....等等的this指向window对象 所以window没有此些属性 得 new一个 所以前面进行一个判段
//也可以 var xiaozhang = new zaomen(); </script> <script>
//构造函数和单例模式一一相互对应的。一下修改代码
//aa公司
var AA = {
function:zaomen(huawen){
if (!(this instanceof zaomen)) {
return new zaomen();
}
//定义私有变量
var _huawen = '普通';
//如果传递了参数 huawen
if(huawen){
_huawen = huawen;
}
this.suo='普通的';
this.huawen = _huawen;
this.create = function(){
return "【锁头】"+this.suo+"[花纹]"+this.huawen;
}
};
} //BB公司
var BB = {
function:zaomen(huawen){
if (!(this instanceof zaomen)) {
return new zaomen();
}
//定义私有变量
var _huawen = '普通';
//如果传递了参数 huawen
if(huawen){
_huawen = huawen;
}
this.suo='普通的';
this.huawen = _huawen;
this.create = function(){
return "【锁头】"+this.suo+"[花纹]"+this.huawen;
}
};
} var xiaozhang = new AA.zaomen();
alert('xiaozhang'+xiaozhang.create()); var xiaoli = new BB.zaomen('绚丽');
alert('xiaoli'+xiaoli.create());
</script>
</body>
</html>

JS-构造函数模式代码实战和总结-极客的更多相关文章

  1. JS构造函数模式

    构造函数是可以创建特定类型对象的函数,可以接受参数定义函数成员.如果之前做过java比较好理解,举个例子: function exampleFunction(arg1, arg2, arg3){ th ...

  2. Mysql实战45讲 06讲全局锁和表锁:给表加个字段怎么有这么多阻碍 极客时间 读书笔记

    Mysql实战45讲 极客时间 读书笔记 Mysql实战45讲 极客时间 读书笔记 笔记体会: 根据加锁范围:MySQL里面的锁可以分为:全局锁.表级锁.行级锁 一.全局锁:对整个数据库实例加锁.My ...

  3. js面向对象、创建对象的工厂模式、构造函数模式、原型链模式

    JS面向对象编程(转载) 什么是面向对象编程(OOP)?用对象的思想去写代码,就是面向对象编程. 面向对象编程的特点 抽象:抓住核心问题 封装:只能通过对象来访问方法 继承:从已有对象上继承出新的对象 ...

  4. 构造函数模式自己定义js对象

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. 面向对象JS基础讲解,工厂模式、构造函数模式、原型模式、混合模式、动态原型模式

    什么是面向对象?面向对象是一种思想!(废话). 面向对象可以把程序中的关键模块都视为对象,而模块拥有属性及方法.这样我们如果把一些属性及方法封装起来,日后使用将非常方便,也可以避免繁琐重复的工作.接下 ...

  6. js设计模式:工厂模式、构造函数模式、原型模式、混合模式

    一.js面向对象程序 var o1 = new Object();     o1.name = "宾宾";     o1.sex = "男";     o1.a ...

  7. JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)

    什么是面向对象?面向对象是一种思想. 面向对象可以把程序中的关键模块都视为对象, 而模块拥有属性及方法. 这样如果我们把一些属性及方法封装起来,日后使用将非常方便,也可以避免繁琐重复的工作.   工厂 ...

  8. JS构造函数、对象工厂、原型模式

    1.对象创建的3中方法 1.1.对象字面量 var obj = { name: "mingzi", work: function () { console.log("wo ...

  9. js面向对象的几种方式----工厂模式、构造函数模式、原型模式

    对象的字面量 var obj={} 创建实例对象 var obj=new Object() 工厂模式 function cPerson(name,sex,age){ var o = new Objec ...

随机推荐

  1. jquery延迟加载(懒加载)插件

    Lazy Load 是一个用 JavaScript 编写的 jQuery 插件. 它可以延迟加载长页面中的图片. 在浏览器可视区域外的图片不会被载入, 直到用户将页面滚动到它们所在的位置. 这与图片预 ...

  2. 网络流(dinic算法)

    网络最大流(dinic) 模型 在一张图中,给定一个源点s,给定汇点t,点之间有一些水管,每条水管有一个容量,经过此水管的水流最大不超过容量,问最大能有多少水从s流到t(s有无限多的水). 解法 di ...

  3. IBase<T>

    public interface IBase<T>//基类 { IEnumerable<T> SelectAll();//查询所有 T FindById(int ID);//根 ...

  4. Lua 用指定字符或字符串分割输入字符串,返回包含分割结果的数组

    // 用指定字符或字符串分割输入字符串,返回包含分割结果的数组 // @function [parent=#string] split // @param string input 输入字符串 // ...

  5. WDA基础十六:ALV的颜色

    这里介绍三种类型的颜色:列的背景色,单元格的背景色,单元格文本的颜色. 1.给ALV结构添加颜色控制字段: 三个字段都是同一类型:WDY_UIE_LIBRARY_ENUM_TYPE COL_BACKG ...

  6. java 删除整数元素集合中的元素

    1. 简介 对于整数类型的元素集合,例如{1, 2, 3, 4, 5},再进行元素删除时需要注意.在List中删除操作有remove(int index)和remove(Object o), 查看两种 ...

  7. java Comparable and Comparator

    1.Comparable简介 此接口对实现它的每个类的对象强加一个总排序.这种排序被称为类的自然排序,类的compareTo方法被称为其自然比较方法.可以通过 Collections.sort(和Ar ...

  8. Struts 2中如何解决中文乱码问题?

    在配置文件中定义如下常量值配置: <constant name=”struts.i18n.encoding” value=”UTF-8”/> 注意:只能解决post请求的乱码问题,针对ge ...

  9. angular学习笔记(2)

    1.angular可观察对象 2.angular绑定方式 3.angular模板 4.angular生命周期 5.angular组件通信

  10. Centos7中网络及设备相关配置

    centos7中,不再赞成使用ifconfig工具,取而代之的是nmcli工具,服务管理也是以systemctl工具取代了service,这些之前版本的工具虽然在centos7中还可以继续使用,只是出 ...