【js基础】创建对象的几种常见模式(工厂模式,构造函数模式,原型模式,构造原型组合模式)
- function createPerson(name,age,job){
- var o = new Object();
- o.name = name;
- o.age = age;
- o.job = job;
- o.sayname = function(){
- console.log(this.name);
- };
- return o;
- }
- var person1 = createPerson("qqq",21,"sss");
- person1.sayname();//qqq
- var person2 = createPerson("aaa",22,"sas");
- person2.sayname();//aaa
- console.log(person1 instanceof createPerson);//false
- console.log(person2 instanceof createPerson);//false
- console.log(person1.sayname === person2.sayname);//false

- function Person(name,age,job){
- this.name = name;
- this.age = age;
- this.job = job;
- this.sayname = function(){
- console.log(this.name);
- };
- }
- var person1 = new Person("qqq",21,"sss");
- person1.sayname();//qqq
- var person2 = new Person("aaa",22,"sas");
- person2.sayname();//aaa
- console.log(person1 instanceof Person);//true
- console.log(person2 instanceof Person);//true
- console.log(person1.sayname === person2.sayname);//false

- function Person(){
- }
- Person.prototype.name = "unio";
- Person.prototype.age = "14";
- Person.prototype.job = "monitor";
- Person.prototype.sayname = function(){
- console.log(this.name);
- };
- var person1 = new Person();
- person1.sayname();//unio
- var person2 = new Person();
- person2.sayname();//unio
- console.log(person1 instanceof Person);//true
- console.log(person2 instanceof Person);//true
- console.log(person1.sayname === person2.sayname);//true



- function Person(name,age,job){
- this.name = name;
- this.age = age;
- this.job = job;
- }
- Person.prototype.sayname = function(){
- console.log(this.name);
- };
- var person1 = new Person("qqq",21,"sss");
- person1.sayname();//qqq
- var person2 = new Person("aaa",22,"sas");
- person2.sayname();//aaa
- console.log(person1 instanceof Person);//true
- console.log(person2 instanceof Person);//true
- console.log(person1.sayname === person2.sayname);//true
- function Person(name,age,job){
- this.name = name;
- this.age = age;
- this.job = job;
- if(typeof this.sayname != "function"){
- Person.prototype.sayname = function(){
- console.log(this.name);
- };
- }
- }
- var person1 = new Person("qqq",21,"sss");
- person1.sayname();//qqq
- var person2 = new Person("aaa",22,"sas");
- person2.sayname();//aaa
- console.log(person1 instanceof Person);//true
- console.log(person2 instanceof Person);//true
- console.log(person1.sayname === person2.sayname);//true




【js基础】创建对象的几种常见模式(工厂模式,构造函数模式,原型模式,构造原型组合模式)的更多相关文章
- JS数组去重的几种常见方法
JS数组去重的几种常见方法 一.简单的去重方法 // 最简单数组去重法 /* * 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中 * IE8以下不支持数组的indexOf方法 * */ ...
- JS创建对象的四种简单方式 (工厂模式和自定义构造函数创建对象的区别)
// 对象:特指的某个事物,具有属性和方法(一组无序的属性的集合) // 特征------>属性 // 行为------>方法 // 创建对象的四种方式 1 // 1.字面量的方式,就是实 ...
- js创建对象的几种方式(工厂模式、构造函数模式、原型模式)
普通方法创建对象 var obj = { name:"猪八戒", sayname:function () { alert(this.name); } } var obj1 = { ...
- js中创建对象的几种方式
创建对象指创建一个object并给这个对象添加属性和方法,有以下几个方式: 最基本的: var Person={}; Person.name='tom'; Person.age='20'; Perso ...
- 【Js】创建对象的6种方式总结、(底部包含属性名为动态的形式)
一.new 操作符 + Object 创建对象 1 var person = new Object(); 2 person.name = "lisi"; 3 person.age ...
- JS 面向对象 ~ 创建对象的 9 种方式
一.创建对象的几种方式 1.通过字面量创建 var obj = {}; 这种写法相当于: var obj = new Object(); 缺点:使用同一个接口创建很多单个对象,会产生大量重复代码 2. ...
- JS进阶-闭包的几种常见形式
作用域链: //作用域链 var a = 1; function test() { var b =2; return a; } alert(test());//弹出1: alert(b);//不能获取 ...
- 比较js中创建对象的几种方式
1.工厂模式 function createObj(name, sex){ var obj = new Object(); obj.name = name; obj.sex = sex; obj.sa ...
- js最好的继承机制:用对象冒充继承构造函数的属性,用原型prototype继承对象的方法。
js最好的继承机制:用对象冒充继承构造函数的属性,用原型prototype继承对象的方法. function ClassA(sColor) { this.color = sColor; } Class ...
随机推荐
- .NET手记-ASP.NET MVC快速分页的实现
对于Web应用,展示List是很常见的需求,随之而来的常见的分页组件.jQuery有现成的分页组件,网上也有着大量的第三方分页组件,都能够快速实现分页功能.但是今天我描述的是用基本的C#和html代码 ...
- iOS-常用的两个弹簧动画pop
POPSpringAnimation *popAna = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerPosition]; popA ...
- Fillder Script语法
官方的Fiddler Script使用文档 http://docs.telerik.com/fiddler/KnowledgeBase/FiddlerScript/ModifyRequestOrRes ...
- Python内置类型(4)--数值
Python有以下三种的数值类型: 整型(integers), 浮点型(floating point numbers), 以及 复数(complex numbers).此外,布尔是整数的子类型. 数值 ...
- list源码3(参考STL源码--侯捷):push_front、push_back、erase、pop_front、pop_back、clear、remove、unique
list源码1(参考STL源码--侯捷):list节点.迭代器.数据结构 list源码2(参考STL源码--侯捷):constructor.push_back.insert list源码3(参考STL ...
- 使用crypt配置Basic Auth登录认证
简介 Basic Auth用于服务端简单的登录认证,通常使用服务器Nginx.Apache本身即可完成.比如我们要限定某个域名或者页面必须输入用户名.密码才能登录,但又不想使用后端开发语言,此时Bas ...
- Postgres绿色版本安装 windows
虽然PostgreSQL是为类UNIX平台开发的,但它却是可以移植的.从7.1版本开始,PostgreSQL可以编译安装和作为一个PostgreSQL服务器运行在Windows NT 4,2000,X ...
- lightswitch 添加 TreeView 控件
代码片段 <UserControl xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk&q ...
- oracle中if/else的三种实现方式
1.标准sql规范 .单个IF IF v=... THEN END IF; .IF ... ELSE IF v=... THEN ELSE t....; END IF; .多个IF IF v=... ...
- Python 判断文件/目录是否存在
使用 os 模块 判断文件是否存在 os.path.isfile(path) 判断目录是否存在 os.path.isdir(path) 判断路径是否存在 # 使用 path 模块 os.path.ex ...