대상과 원형을 향한 (1)
정의
두 가지 방법으로 객체를 정의합니다.
new Object() 형식
새 Object()에서 객체를 정의합니다.객체를 통과합니다.속성 이름은 속성을 만들고 속성에 값을 부여합니다.
참고: new Object()의 new 키워드는 생략할 수 있습니다.var obj = new Object(); // var obj = Object();
obj.name = "hh"; // obj name , hh。
alert(obj.age);
형식
직접 {}을 통해 대상을 정의합니다.첫 번째 방식에 비해 이 방식이 가장 상용된다.
var obj = new Object(); // var obj = Object();
obj.name = "hh"; // obj name , hh。
alert(obj.age);
var obj = {
name:"fdafa", //
'age':20 // , ,
};
obj.sex=" "; // 。
alert(obj.name+obj.age+obj.sex);
function test(name,age,address,love){
// do sth
}
test("name","age","address","love");
에서test 방법을 호출할 때 전달하는 매개 변수의 순서는 정의할 때와 일치해야 한다. 그렇지 않으면 매개 변수의 혼란이 발생할 수 있다.다음과 같은 방식으로 수정할 수 있다. function test(obj){
alert(obj.name); // 。
alert(obj.love)
}
test({
name:"name",
age:'age',
address:'address',
love:'love'
}); // ,
이렇게 하면 전참을 할 때 익명의 대상만 전달할 수 있고 대상의 속성을 정의할 때도 매우 명확하다.속성 참조
다음과 같은 두 가지 방법이 있습니다.
var obj = {
name:"fdafa",
};
obj.sex=" ";
alert(obj.name+obj['sex']); // ,
var obj = {
name:"fdafa-",
};
var p = 'name'
alert(obj.name+obj[p]);
obj[p]라고 쓰여 있지만 p는 변수이고 그 값은'name'이기 때문에obj[p]는obj['name']와 완전히 같다.이런 쓰기 방법은 for in 문장과 결합하면 한 대상의 모든 속성을 완전히 훑어볼 수 있다.var obj = {
name:"fdafa",
age:10
};
for(var p in obj){
alert(p +"="+obj[p]);
}
정의 방법
방법명도 일반 속성으로 일반 속성의 정의 방식과 같다.유일한 차이점은 함수를 사용하여 이 변수에 값을 부여하는 것이다.
var obj = {
run:function(){
return "run is obj.fun";
} // run , , run
'test':function () {
return "test";
} // ,test ,
};
alert(obj.run());
var o2 = new Object();
o2.run = function(){
return "run is o2.function"
} //
alert(o2.run())
속성 삭제
delete 속성 이름으로 지정한 속성을 삭제합니다.var obj ={
name:'fdsa'
}
alert(obj.name)
delete obj.name; // obj name
alert(obj.name);
private와public 기능 실현
구조 함수에서this를 통해 정의된 속성이나 방법은public로 외부에서 직접 사용할 수 있다.var을 통해 정의된 속성이나 방법은 외부에서 접근할 수 없습니다.이 특성을 이용하여 Getter와setter의 유사한 기능을 실현할 수 있다.function Demo(){
var age;
this.setAge = function(age){
this.age = age;
}
this.getAge = function(){
return this.age;
}
}
var d = new Demo()
d.setAge('aaa')
console.log(d.getAge())
외부에서age에 대한 조작은 getage와 setage를 통해서만 할 수 있습니다.자바 비안의 setter와getter 방법과 유사합니다.
정적 속성 구현
정적 속성이란 모든 대상이 공유하는 속성으로 한 대상이 이 속성의 값을 수정하면 다른 대상의 값도 따라서 바뀐다.(function(){
var user
Demo = function(value){ // Demo var,
user = value;
Demo.prototype.getUser = function() {
return user
};
}
})()
var d = new Demo('first')
console.log(d.getUser())
var d2 = new Demo('second')
console.log(d.getUser())
모두 d 대상을 사용하여 출력합니다. 첫 번째 출력first, 두 번째 출력second.
사용자는 익명 함수의 속성이므로 new Demo () 를 사용할 때마다 전달되는 값이 공유됩니다.
constructor
모든 대상은 constructor 속성을 가지고 있으며, 이 대상의 구조 함수를 가리킨다.
js에 클래스가 없습니다. 일반 함수와 new 키워드를 연합하여 사용할 때 일반 함수는 구조 함수로 바뀌고 시스템은 이 구조 함수의 실례 대상을 만들 것입니다.function Demo(){
}
var d = new Demo() // new ,Demo , d
alert(d.constructor == Demo) // true
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
var obj ={
name:'fdsa'
}
alert(obj.name)
delete obj.name; // obj name
alert(obj.name);
구조 함수에서this를 통해 정의된 속성이나 방법은public로 외부에서 직접 사용할 수 있다.var을 통해 정의된 속성이나 방법은 외부에서 접근할 수 없습니다.이 특성을 이용하여 Getter와setter의 유사한 기능을 실현할 수 있다.
function Demo(){
var age;
this.setAge = function(age){
this.age = age;
}
this.getAge = function(){
return this.age;
}
}
var d = new Demo()
d.setAge('aaa')
console.log(d.getAge())
외부에서age에 대한 조작은 getage와 setage를 통해서만 할 수 있습니다.자바 비안의 setter와getter 방법과 유사합니다.
정적 속성 구현
정적 속성이란 모든 대상이 공유하는 속성으로 한 대상이 이 속성의 값을 수정하면 다른 대상의 값도 따라서 바뀐다.(function(){
var user
Demo = function(value){ // Demo var,
user = value;
Demo.prototype.getUser = function() {
return user
};
}
})()
var d = new Demo('first')
console.log(d.getUser())
var d2 = new Demo('second')
console.log(d.getUser())
모두 d 대상을 사용하여 출력합니다. 첫 번째 출력first, 두 번째 출력second.
사용자는 익명 함수의 속성이므로 new Demo () 를 사용할 때마다 전달되는 값이 공유됩니다.
constructor
모든 대상은 constructor 속성을 가지고 있으며, 이 대상의 구조 함수를 가리킨다.
js에 클래스가 없습니다. 일반 함수와 new 키워드를 연합하여 사용할 때 일반 함수는 구조 함수로 바뀌고 시스템은 이 구조 함수의 실례 대상을 만들 것입니다.function Demo(){
}
var d = new Demo() // new ,Demo , d
alert(d.constructor == Demo) // true
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
(function(){
var user
Demo = function(value){ // Demo var,
user = value;
Demo.prototype.getUser = function() {
return user
};
}
})()
var d = new Demo('first')
console.log(d.getUser())
var d2 = new Demo('second')
console.log(d.getUser())
모든 대상은 constructor 속성을 가지고 있으며, 이 대상의 구조 함수를 가리킨다.
js에 클래스가 없습니다. 일반 함수와 new 키워드를 연합하여 사용할 때 일반 함수는 구조 함수로 바뀌고 시스템은 이 구조 함수의 실례 대상을 만들 것입니다.
function Demo(){
}
var d = new Demo() // new ,Demo , d
alert(d.constructor == Demo) // true
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.