JS创建对象之组合使用构造函数模式和原型模式
function Person(name, age, job) {
this.name = name;
this.age = age;
this.job = job;
this.friends = {'"Mar", "Court"};
}
Person.prototype = {
constructor: Person;
sayName: function() {
alert(this.name);
}
}
var person1 = new Person("Mary", 29, "Software Engineer");
var person2 = new Person("Mike", 27, "Software Engineer");
person1.friends.push("Van");
alert(person1.friends); // "Mar, Court, Van"
alert(person2.friends); // "Mar, Court"
alert(person1.friends === person2.friends); // false
alert(person1.sayName ==== person2.sayName); // true
注:js中 == 和 === 区别
简单来说: == 代表相同, ===代表严格相同, 为啥这么说呢
这么理解:(1)当进行 == 比较时,先检查两个操作数数据类型,如果相同, 则进行 === 比较,否则进行一次类型转换再进行比较;
(2)而 === 比较时, 如果类型不同,直接就是false.
比较过程:
(1)双等号==:
1)如果两个值类型相同,再进行三个等号 === 的比较
2)如果两个值类型不同,也有可能相等,需根据以下规则进行类型转换在比较:
i. 如果一个是null,一个是undefined,那么相等
ii. 如果一个是字符串,一个是数值,把字符串转换成数值之后再进行比较
(2)三等号===:
1)如果类型不同,就一定不相等
2)如果两个都是数值,并且是同一个值,那么相等;如果其中至少一个是NaN,那么不相等(判断一个值是否是NaN,只能使用isNaN( ) 来判断)
3)如果两个都是字符串,每个位置的字符都一样,那么相等,否则不相等。
4)如果两个值都是true,或是false,那么相等
5)如果两个值都引用同一个对象或是函数,那么相等,否则不相等
6)如果两个值都是null,或是undefined,那么相等
========== ==================== js中 == 和 === 区别 知识点的来源 ===================================
https://www.cnblogs.com/nelson-hu/p/7922731.html
JS创建对象之组合使用构造函数模式和原型模式的更多相关文章
- 【js基础】创建对象的几种常见模式(工厂模式,构造函数模式,原型模式,构造原型组合模式)
一.工厂模式 缺点:没有解决对象识别的问题 优点:解决了创建多个相似对象的问题 function createPerson(name,age,job){ var o = new Object(); o ...
- JavaScript之面向对象学习六原型模式创建对象的问题,组合使用构造函数模式和原型模式创建对象
一.仔细分析前面的原型模式创建对象的方法,发现原型模式创建对象,也存在一些问题,如下: 1.它省略了为构造函数传递初始化参数这个环节,结果所有实例在默认的情况下都将取得相同的属性值,这还不是最大的问题 ...
- JS中使用组合构造函数模式和原型模式
创建自定义类型的最常见方式,就是组合使用构造函数模式与原型模式.构造函数模式用于定义实例属性,而原型模式用于定义方法和共享的属性. 结果,每个实例都会有自己的一份实例属性的副本,但同时又共享着对方法的 ...
- JS面向对象(1)——构造函数模式和原型模式
1.构造函数模式 构造函数用来创建特定的类型的对象.如下所示: function Person(name,age,job){ this.name=name; this.job=job; this.ag ...
- javacript 组合使用构造函数模式和原型模式
构造函数模式创建对象 基本方法 function Person(name,age){ this.name=name; this.age=age; this.sayName=function(){ al ...
- js设计模式:工厂模式、构造函数模式、原型模式、混合模式
一.js面向对象程序 var o1 = new Object(); o1.name = "宾宾"; o1.sex = "男"; o1.a ...
- JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)
什么是面向对象?面向对象是一种思想. 面向对象可以把程序中的关键模块都视为对象, 而模块拥有属性及方法. 这样如果我们把一些属性及方法封装起来,日后使用将非常方便,也可以避免繁琐重复的工作. 工厂 ...
- javascript创建对象之函数构造模式和原型模式结合使用(四)
创建自定义类型的常见方式就是组合使用构造函数模式与原型模式一起使用. 构造函数模式用于定义实例对象的特有的部分(属性和方法),原型模式用于定义共享的部分. 这样最大限度的节省了内存的开销. funct ...
- javascript 面向对象编程(工厂模式、构造函数模式、原型模式)
javascript 面向对象编程(工厂模式.构造函数模式.原型模式) CreateTime--2018年3月29日17:09:38 Author:Marydon 一.工厂模式 /** * 工厂模 ...
随机推荐
- 使用unittest单元测试框架对加法做单元测试
import unittest from parameterized import parameterized def cacl(a, b): return a+b class MyCacl(unit ...
- request 的介绍使用属性
上下文:相当于一个容器,保存了 Flask 程序运行过程中的一些信息. Flask中有两种上下文,请求上下文和应用上下文 请求上下文(request context) 在 flask 中,可以直接在视 ...
- cookie 常用操作
Cookie:指网站为了辨别用户身份.进行会话跟踪而储存在用户本地的 key/value 型数据(通常经过加密), cookie key/value 型数据可以由服务器端自己定义. Cookie是由服 ...
- java面试——问题回溯
背景:用来记录面试过程中遇到的问题,在这里进行记录,下次不要犯同样的错误. 迪普科技 Linux服务器下的top命令 #动态更新的虚拟文件实际上是许多其他内存相关工具(如:free / ps / to ...
- bzoj1791[IOI2008]Island岛屿(基环树+DP)
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1791 题目大意:给你一棵n条边的基环树森林,要你求出所有基环树/树的直径之和.n< ...
- Nginx.conf配置文件参数说明与优化
参考连接:nginx 核心配置优化详解 先说下优化 1.nginx运行工作进程个数 worker_processes 1; Nginx进程,一般设置为和cpu核数一样(nginx启动后有多少个wor ...
- python基础之IO编程
读文件 with open('/path/to/file', 'r') as f: print(f.read()) 调用read()会一次性读取文件的全部内容,read()函数里面可以传入每次最多读取 ...
- qml: 模块定义与使用
1. 模块的定义qmldir Module MyModule MyTest 1.0 MyTest.qml MyTest 1.3 MyTest.qml 2. 导入: 使用qrc: RESOU ...
- 流畅的python--2 序列构成的数组
我们把文本.列表和表格叫做数据火车...FOR命令通常能作用于数据火车上. ---ABC Programmer's Handbook 不管是哪种数据结构,字符串.列表.字节序列.数组.XML ...
- Event Recommendation Engine Challenge分步解析第二步
一.请知晓 本文是基于Event Recommendation Engine Challenge分步解析第一步,需要读者先阅读上篇文章解析 二.用户相似度计算 第二步:计算用户相似度信息 由于用到:u ...