var person1 = {
name:"xxx",
age:"xxx",
eat:function(){}
};
複製代碼
var person2 = new Object();
person2.name = "xxx";
person2.age = "xxx";
person2.eat = function(){};
複製代碼
function Person(name,age){
this.name = name;
this.age = age;
this.eat = function(){};
}
//建立對象--->實例化一個對象的同時對屬性進行初始化
var person3 = new Person("xx",11);
複製代碼
function createObject(name,age){
var obj = new Object();
obj.name = name;
obj.age = age;
obj.eat = function(){};
return obj;
}
複製代碼
function Person(name,age){
this.name = name;
this.age = age;
this.eat = function(){};
}
//建立對象--->實例化一個對象的同時對屬性進行初始化
var person3 = new Person("xx",11);
複製代碼
function Person(name,age){
this.name = name;
this.age = age;
this.eat = function(){};
}
//構造函數--->實例對象
var per = new Person("xx",11);
console.log(per.constructor == Person);//true
console.log(per instanceof Person);//true
複製代碼
原型:html
實例對象的__proto__和構造函數中的prototype相同--->true,又由於實例對象是經過構造函數來建立的,構造函數中又原型對象prototype,因此實例對象的__proto__指向了構造函數的原型對象prototypenode
原型的做用之一:共享數據,節省空間程序員
簡單的原型語法(缺陷:須要手動修改構造器的指向)編程
Object.prototype = {
//手動修改構造器指向
constructor:Student,
attribute:"xxx",
method: function(){};
};
複製代碼
原型中的方法是能夠互相訪問的json
function Object(name,age){
this.name = name;
this.age = age;
}
Object.prototype.method1 = function(){
console("method1");
this.method2;
};
Object.prototype.method2 = function(){
console("method2");
this.method1;
};
var obj = new Object("xx",11);
obj.method1();// method1 method2
obj.method2();// method2 method1
複製代碼
原型的使用實例瀏覽器
<body>
<input type="button" value="顯示效果" id="btn"/>
<div id="dv" style="width: 300px;height: 200px;background-color: red"></div>
<script src="common.js"></script>
<script>
/**
* 改變元素樣式內容
*@param btnObj 按鈕對象
*@param dvObj 盒子對象
*@param josn 改變的樣式信息
*/
function ChangStyle(btnObj,dvObj,json){
this.btnObj = btnObj;
this.dvObj = dvObj;
this.json = json;
}
//爲ChangStyle的原型對象添加方法
ChangStyle.prototype.init = function(){
var that = this;//存儲ChangStyle實例對象
this.btnObj.onclick = function(){
for(var key in that.json){
that.dvObj.style[key] = that.json[key];
}
};
};
//實例對象
var json = {"width" : "500px", "height" : "800px", "background" : "blue", "opacity": "0.2"};
var btn = document.getElementById("btn");
var dv = document.getElementByID("dv");
var cs = new ChangStyle(btn,dv,json);
cs.init();
//調用方法
</script>
</body>
</html>
複製代碼
構造函數和實例對象和原型對象之間的關係bash
爲系統的對象的原型中添加方法函數式編程
String.prototype.myReverse=function () {
for(var i=this.length-1;i>=0;i--){
console.log(this[i]);
}
};
var str="abcdefg";
str.myReverse();//g f e d c b a (隔行輸出的)
複製代碼
局部變量變成全局變量(把局部變量給window)函數
//函數的自調用--自調用函數
function(){
var num = 10;//局部變量
};)();
console.log(num); //報錯
//win形參 window實參
(function(win){
var num = 10;
win.num = num;
})(window);
console(num);//10
複製代碼
------------------------------------------------------記錄於 2019.4.20 JavaScript高級(一)優化