JS 操作符优先级及new

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS 操作符优先级及new相关的知识,希望对你有一定的参考价值。

参考技术A 基于segmentfault上的一道题

由此可以知道new 的优先级带参数的比不带的高

在第三种解析中我们要计算 new (foo.prototype.getName)() 的值,首先要明白new到底做了什么,其实就做了3件事

第一步:创建一个空对象
第二步:绑定该对象的原型
第三部:调用构造函数 // 执行了构造函数的内容
所以在 new (foo.prototype.getName)() 也就会返回foo.prototype.getName的一个实例,并且执行一次构造函数,也就是执行 console.log(3) ,打印3这个结果

js创建及操作数组

一:创建数组

1:使用Array构造函数(new可以省略):

var colors = new Array();
创建length值为20的的数组: var colors = new Array(20); 直接传递数组的项: var colors = new Array("red", "blue", "green");

2:使用数组字面量表示法:

 var colors = ["red", "blue", "green"];

3:读取和设置数组的值

colors[2] = "black"   //修改第三项

colors[3] = "brown"  //新增第四项

colors.length = 2;   //数组长度缩短为2

colors[colors.length] = "white" //设置最后一项

二:检测数组

1:一个全局作用域的情况下:

if(value instanceof Array){

  //执行某些操作

}

2:无视多个全局作用域,确定是否为数组:

if(Array.isArray(value)){

  //对数组执行某些操作(ie9+)

}

三:转换方法(toString(),valueOf(),join())

var colors = ["red", "blue", "green"];
 alert(colors.toString());   //red,blue,green以逗号分隔的字符串
 alert(colors.valueOf());    //red,blue,green返回的是数组
 alert(colors);              //red,blue,green

var colors2 = ["red", "blue", "green"];
alert(colors2.join(",")); //red,blue,green
alert(colors2.join("||")); //red||blue||green

四:栈方法(push(),pop()),队列方法(shirt(),push())

var colors = new Array();
var count = colors.push("red","blue","green");  //向后插入两项
alert(count);            //3
alert(colors);           //red,blue,green

var item = colors.pop();                //移除最后一项并返回
alert(item);            //green
alert(colors.length) //2

var item2 = colors.shift(); //移除第一项并返回
alert(item2); //red
alert(colors.length) //1

var count2 = colors.unshift("black","white");
alert(count2); //3
alert(colors); //black,white,blue

 

五:重排序方法(reverse(),sort())

var values = [0,1,5,10,15];
values.reverse();       //翻转数组
alert(values);          //15,10,5,1,0
values.sort();          //升序排列,先调用tostring()将数组项转换成字符串,然后比较字符串。
alert(values);          //0,1,10,15,5
values.sort(compare);   //加入比较函数
alert(values) //0,1,5,10,15
function compare(value1,value2){
return value1 - value1; //降序
}

  


















以上是关于JS 操作符优先级及new的主要内容,如果未能解决你的问题,请参考以下文章

js中this的绑定规则及优先级

JS 运算符的优先级 (来自MDN)

Java入门到架构师教程之JavaScript运算符及运算符优先级

运算优先级及类型转换

C# 显式创建线程 or 使用线程池线程--new Thread() or ThreadPool.QueueUserWorkItem()

[JS] 先bind后new,this的指向