JavaScript new 一个构造函数
我们在使用JavaScript对象的时候,除了一些浏览器内置的单体对象可以直接使用外,都会new一个出来使用。
1、new
var obj = new Object();
此时的new关键字干了最有用的一件事、继承所有Object.prototype上的方法( 一切对象皆继承于Object )
2、new过程中发生了什么?
1)、创建一个对象
2)、将构造函数的作用域赋给新对象(因此this就指向了新对象(obj))
3)、执行构造函数中的代码(为新的对象添加属性)
4)、返回新对象
var arr = [1,2,3,4]; arr.a = 12; arr.show = function(){ alert(this.a); } arr.show();
var obj = new Object(); obj.name = "ntsc"; obj.qq = "785537837"; obj.showName = function(){ alert("我的名字叫:"+ this.name); }; obj.showQQ = function(){ alert("我的QQ号:"+ this.qq);创建 }; console.dir(Object); console.dir(obj);
function createPerson(name, QQ) { // 构造函数 // 创建一个空白对象(原料) var obj = new Object(); // 加属性和方法(加工) obj.name = name; obj.qq = QQ; obj.showName = function () { console.log("我的名字叫:" + this.name); }; obj.showQQ = function () { console.log("我的QQ号:" + this.qq); }; // 对象返回(出厂) return obj; }
var obj = createPerson("ntsc", "123456");
function CreatePerson(name, QQ) { // 在构造函数里面增加属性 this.name = name; this.qq = QQ; } CreatePerson.prototype.showName = function () { // 在原型里面增加方法(一样的东西放入"原型"里面) console.log("我的名字叫:" + this.name); }; CreatePerson.prototype.showQQ = function () { console.log("我的QQ号:" + this.qq); }; ar obj = new CreatePerson("ntsc", "123465")
function Obj(){ this.a = "123"; this.b = function(){ alert("b"); } } Obj.prototype.c = function(){ alert("c"); } var obj = new Obj();
面向对象:在不了解原理的情况下、使用其功能。只关注对象的功能、不去关注其内部细节(一种通用思想)
对象:是由"属性" 和 "方法"构建的
变量(自由的、不属于任何事物) 和 属性(属于某一个特定对象)本质上是一个东西
函数(自由的、不属于任何事物) 和 方法(属于某一个特定对象)本质上是一个东西
Object:一切对象他爹(很纯很干净、一切对象皆继承于他)
this:
1、this是誰和函数在哪里定义和哪里执行没有关系
2、当前的方法属于誰、this就是誰(看函数前面的点"."、有点的话前面是誰、this就是誰)、没有电、this为window
3、給函数绑定事件、对于的this就是当前被绑定事件的元素
4、自执行函数、this永远都是window
对象实例化:人类(对象) --- 小明(实例化) --- 具体到个体
注:如果构造函数不需要参数,可以省去括号,即:new Obj() 和 new Obj是等同的。
居敬持志~ Coding