关闭

Js new运算符

时间: 2019-05-29阅读: 598标签: 运算

new运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例。new关键字会进行如下的操作:

1. 创建一个空的简单JavaScript对象(即{});
2. 链接该对象(即设置该对象的构造函数)到另一个对象 ; 
3. 将步骤1新创建的对象作为this的上下文 ; 
4. 如果该函数没有返回对象,则返回this。  
var cat = new Animal("cat");
new Animal("cat") = function () {
    var obj = {};        // 第1步
    obj.__proto__ = Animal.prototype;    // 第2步
    var result = Animal.call(obj,"cat");    // 第3步:obj.Animal("cat")
    return typeof result === 'object'? result : obj;    // 第4步
}
function Car(make, model, year) {
  this.make = make;
  this.model = model;
  this.year = year;
}

var car1 = new Car('Eagle', 'Talon TSi', 1993);
console.log(car1.make);// expected output: "Eagle"


创建一个用户自定义的对象需要两步:

1. 通过编写函数来定义对象类型。 
2. 通过new来创建对象实例。  

创建一个对象类型,需要创建一个指定其名称和属性的函数;对象的属性可以指向其他对象,看下面的例子:
代码new Foo(…)执行时,会发生以下事情:

1. 一个继承自Foo.prototype的新对象被创建。 
2. 使用指定的参数调用构造函数Foo,并将 this绑定到新创建的对象。newFoo等同于new Foo(),也就是没有指定参数列表,Foo不带任何参数调用的情况。 
3. 由构造函数返回的对象就是new表达式的结果。如果构造函数没有显式返回一个对象,则使用步骤1创建的对象。(一般情况下,构造函数不返回值,但是用户可以选择主动返回对象,来覆盖正常的对象创建步骤)  

你始终可以对已定义的对象添加新的属性。例如,car1.color = "black"语句给car1添加了一个新的属性color,并给这个属性赋值 "black"。但是,这不会影响任何其他对象。要将新属性添加到相同类型的所有对象,你必须将该属性添加到Car对象类型的定义中。 你可以使用Function.prototype属性将共享属性添加到以前定义的对象类型。这定义了一个由该函数创建的所有对象共享的属性,而不仅仅是对象类型的其中一个实例。下面的代码将一个值为null的color属性添加到car类型的所有对象,然后仅在实例对象car1中用字符串 "black" 覆盖该值。

function Car() {}
car1 = new Car();
car2 = new Car();

console.log(car1.color);    // undefined
 
Car.prototype.color = "original color";
console.log(car1.color);    // original color
 
car1.color = 'black';
console.log(car1.color);   // black

console.log(car1.__proto__.color) //original color
console.log(car2.__proto__.color) //original color
console.log(car1.color)  // black
console.log(car2.color) // original color
站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

2.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/3915

关闭

用javascript怎么求最小值?

JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能的。

JS保留两位小数

以下处理结果会四舍五入:以下处理结果不会四舍五入第一种,先把小数边整数:第二种,当作字符串,使用正则匹配:注意:如果是负数,请先转换为正数再计算,最后转回负数

JavaScript循环计数器

JS经常会遇到延迟执行的动作,并且失败后自动尝试,尝试N次之后就不再尝试的需求,今天刚好又遇到,于是写个闭包,以后不断完善继续复用。检查并计数第一个参数用来标记是尝试哪个动作的,第二个参数是最大尝试次数

判断一个数是否为质数

质数是指在大于1的自然数中,除了1和它自身外没有其他因数的自然数。flag初始值为true,当n%i === 0时(1<i<n),说明n不是质数,此时flag值为false且循环终止;

PHP取整、四舍五入取整、向上取整、向下取整、小数截取

PHP取整数函数常用的四种方法:1.直接取整,舍弃小数,保留整数:intval(); 2.四舍五入取整:round(); 3.向上取整,有小数就加1:ceil(); 4.向下取整:floor()。

Js中NaN不等于NaN

断点调试之后发现无论如何都不相等,方法parseInt()返回的结果确实是NaN,但是与右侧的NaN比较返回的结果却是false,这时候才突然想起来NaN有不等于自身的特性

JavaScript中typeof运算符有什么用?

JavaScript中typeof运算符可以用来检测一个变量的类型。typeof运算符会返回一个字符串,表示未经计算的操作数的类型。typeof是一个运算符,有2种使用方式:typeof(表达式)和typeof 变量名,第一种是对表达式做运算,第二种是对变量做运算。

js除了Math.floor方法,还可以通过位运算|,>>实现向下取整

我们都知道通过Math.floor()方法可实现数值的向下取整,得到小于或等于该数字的最大整数。除了Math.floor方法,还可以使用位运算|,>>来实现向下取整哦

JS小数运算失精度的问题

浮点数值的最高精度是17位小数,但在进行运算的时候其精确度却远远不如整数;整数在进行运算的时候都会转成10进制; 而java和JavaScript中计算小数运算时,都会先将十进制的小数换算到对应的二进制,一部分小数并不能完整的换算为二进制

Js比较和逻辑运算符

比较和逻辑运算符用于测试 true 或 false。比较运算符在逻辑语句中使用,以判定变量或值是否相等。我们给定 x = 5,下表中解释了比较运算符:

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!