javascript构造函数强制使用new

如果有时候我们忘记对构造函数使用new的话,构造函数的this将指向window

function Person(){
  this.name = ‘Julie‘;
}
var good_moring = Person();
console.log(good_moring); //输出undefined
console.log(window.name); //输出Julie

遵循命名约定一定程序上有助于避免忘记使用new所带来的问题,但命名约定也只是一种建议,并不能强制保证正确的行为。

板栗:

function Waffle(){
  if( !(this instanceof Waffle) ){
    return new Waffle();
  }
  this.name = ‘carl‘;
}
var first = new Waffle(),
second = Waffle();
console.log(first.name); //carl
console.log(second.name); //carl

javascript构造函数强制使用new

时间: 2024-08-06 04:23:28

javascript构造函数强制使用new的相关文章

深入javascript——构造函数和原型对象

深入javascript——构造函数和原型对象 常用的几种对象创建模式 使用new关键字创建 最基础的对象创建方式,无非就是和其他多数语言一样说的一样:没对象,你new一个呀! var gf = new Object(); gf.name = "tangwei"; gf.bar = "c++"; gf.sayWhat = function() { console.log(this.name + "said:love you forever");

链接:深入理解javascript构造函数和原型对象

链接:深入理解javascript构造函数和原型对象http://www.jb51.net/article/55539.htm

[概念] javascript构造函数和普通函数的

[概念] javascript构造函数和普通函数的 javascript构造函数和普通函数的区别是什么: 调用方式的区别: 构造函数需要使用new运算符调用,如果构造函数没有参数可以省略小括号,比如new Object. 普通函数的调用不需要new运算符,而且必须要有小括号. 关于new的作用可以参阅js的new运算符的作用简单介绍一章节. this的指向问题: 构造函数的this会被绑定到创建的对象实例上. 普通函数的this则属于此函数的调用者. 命名方式: 构造函数名称通常首字母要大些.

javascript 构造函数方式定义对象 (转载)

javascript 构造函数方式定义对象 javascript是动态语言,可以在运行时给对象添加属性,也可以给对象删除(delete)属性 <html> <head> <script type="text/javascript"> /* //01.定义对象第一种方式 var object =new Object(); alert(object.username); //01.1增加属性username object["username&q

javascript构造函数模块

var Person = (function(){ var Constr; Constr = function(){ this.name = 'carl'; } Constr.prototype = { constructor : Constr, getName : function(){ return this.name; } } return Constr; }()) var obj = new Person(); console.log(obj.getName());  //输出:carl

JavaScript构造函数的继承

我们已经在使用JavaScript的构造函数,来创建自己的自定义对象类型.但是,我们并没有看到如何创建一个继承层次结构. 重要的是,虽然构造函数通常被称为“类”,但他们真的是不一样的东西.在JavaScript中,一个构造函数就是在new一个对象时调用的函数. 这里有一个小复习: function SuperHuman (name, superPower) { this.name = name; this.superPower = superPower; } SuperHuman.prototy

Javascript构造函数简析

构造函数 根据调研,在使用new操作符通过构造函数实例化一个对象时,经过了以下过程: 创建一个空对象. 将这个空对象的__proto__成员指向了构造函数对象的prototype成员对象. 将构造函数的作用域赋给新对象,因此构造函数中的this指向新对象,然后再在该对象上下文中调用构造函数. 返回新创建对象. 注意:在JavaScript标准中,并没有__prop__这个属性,不过它现在已经是一些主流的JavaScript执行环境默认的一个标准属性,用于指向构造函数的原型.该属性是默认不可见的,

Javascript 构造函数模式、原型模式

前两天写完组合继承,打算总结一下原型继承的,不过今天看了一下工厂模式.构造函数模式和原型模式,觉得有必要总结一下以加深印象. ——————————————————————————————————————————————————————————————————————————————————碎碎念. 1.工厂模式 <Javascript 高级程序设计(第3版)> 用了寥寥十多行介绍了工厂模式.我找了一些相关资料,想确定一下这种模式的具体适用场景和优势.按照资料中的说法,是考虑到 ECMAScri

JavaScript构造函数学习笔记

我们都知道在JavaScript中一切皆对象,那么问题来了,对象是什么呢?? 答:对象是某个特定引用类型的实例. 那么新对象如何建立呢?? 答:新对象是使用new操作符后跟一个构造函数来创建的. 构造函数本身就是一个函数,只不过该函数时处于创建新对象的目的而定义的. 那我们就来创建一个Object的实例看看吧~~ 1 var person = new Object(); 这行代码创建了一个Object新实例并保存在变量person中,使用的构造函数就是Obnject. 那我们自定义一个构造函数呢