js中的var a = new A;与var a = new A()的区别

JavaScript 中的new关键字与C#,JAVA中的概念完全不一样。
  例:var a=new A();
  让我们来看看在JavaScript中的new发生了什么?
  var a={};//建立了一个新对象;
  a.__proto__=A.prototype;  //将a的原型指向A;那么a就继承了A的方法与属性!
  A.call(a);//调用了A里的构造函数;
  document.write(a.__proto__===A.prototype);//为true 
(ie不支持!因为在IE中__proto__为私有属性,不能能访问)
  所以new的作用其实就是建了一个空的对象 ,并且通过原型链记录原始对象的方法与属性

那么var a=new A()与var a=new A 的没有太大的区别,他们都说明了建立对象所需要的说明,比如a.__proto__指向谁?空对象的名字?等等。但是有一个小小的区别就是,如果A的构造为下面这种:
  function A(name,addr){
  this.name=name;
this.addr=addr;
}
那么var a=new A就不好构建对象了

原文地址:https://www.cnblogs.com/Tohold/p/9021063.html

时间: 2024-10-10 09:50:22

js中的var a = new A;与var a = new A()的区别的相关文章

js中return 、return false 、return true、break、continue区别

在开发中不熟悉这三者区别的同学,一般都知道return可以中止,但会根据字面意思觉得return true 中止当前函数执行,但其后的函数还会继续执行.return false 中止当前函数执行,其后的函数不会执行,这是错误的想法.先看下面控制台的例子 一:可以看出三者都中止了函数执行,return后的语句不再执行,唯一区别是函数的返回值不同. 二:return只是中止当前函数,与其后的函数没有关系, 可见return只是中止当前函数对其后函数没有影响 三:对于函数中的for循环里的return

关于js中的scrollTop

最近想写一个信息滚动的demo,但是一直没有实现,最后查找资料,看了网上的一些例子,之后才明白原因:没有清楚scrollTop的真正含义 html代码: <div class="info-area" id="area">              <ul id="list">                     <li><a href="">菲律宾渔民拖走黄岩岛附近多个中国浮

JS中的变量和输入输出

一.使用JS的三种方式 1.在HTML标签中,直接内嵌JS(并不提倡使用) <button onclick="alert('点你咋地')">点我</button> >>> 不符合w3c关于内容与行为分离的要求 2.在HTML页面中使用<script></script>包裹JS代码 <script type="text/javascript"> //JS代码 </script>

60秒验证码倒计时js代码 js样式代码 方块上下左右随机移动(定时器) js中获取元素的方法 js中表单提交

60秒验证码倒计时js代码 <script type="text/javascript"> var countdown=60; function settime(val) { if (countdown == 0) { //removeAttribute() 方法删除指定的属性. disabled属性规定应该禁用 input 元素. val.removeAttribute("disabled"); val.value="免费获取验证码"

js中的逻辑与(&amp;&amp;)和逻辑或(||)

之前有一个同事去面试,面试过程中碰到这样一个问题: 在js中写出如下的答案 : var a = 2; var b = 3; var andflag = a && b ; var orflag = a || b; 问andflag 和orflag 分别是什么? 起初我认为: andflag 和orflag 的值都为 true; 毕竟 && 和 || 都是求Boolean ,后来发现,我错了. 答案应该是  andflag  = 3,orflag = 2; 原因是这样的: 在运

js中的trim

trim方法去除字符串左右两端的空格,在js中此方法的使用实例如下 var arr=[' app','bpp  ',' cpp ']; console.log(arr); arr.forEach(function(v,i,a){ a[i]=v.trim(); }); console.log(arr);

java和js中不定项参数调用方法

一.java中 public void test(Object ... args){ for(Object temp:args){ System.out.print(temp); } } 二.js中 用arguments对象 function test(){ for(var i=0;i<=arguments.length;i++){ alert(""+arguments[i]); } }

js中构造函数的原型添加成员的两种方式

首先,js中给原型对象添加属性和方法. 方式一:对象的动态特效 给原型对象添加成员 语法:构造函数.prototype.方法名=function (){ } 方式二:替换原型对象(不是覆盖,而是替换,把原先的同名的直接替换成现在的) 语法:构造函数.prototype.方法名={ } tips:方式二不常用,因为这样会修改了原型本身 搜索:JS中通过构造函数添加成员方法和通过原型法添加成员方法的区别 参考网址  http://blog.csdn.net/xxmzumeng/article/det

node.js中文件读取方式中流方式

1.node.js中文件读取流方式: var fs=require("fs"); var data; var s1=fs.createReadStream("input.txt"); s1.on("data",function(txt){ data+=txt; }) s1.on("end",function(){ console.log("文件流式读取成功!") }) 2.管道方式: var fs=requ

node.js中使用net模块创建服务器和客户端

1.node.js中net模块创建服务器(net.createServer) // 将net模块 引入进来 var net = require("net"); // 创建一个net.Server用来监听,当连接进来的时候,就会调用我们的函数 // client_sock,就是我们的与客户端通讯建立连接配对的socket // client_sock 就是与客户端通讯的net.Socket var server = net.createServer(function(client_soc