Object 객체 메소드 요약
9806 단어 전단 학습
Object 객체 메소드 요약
주로 Object 객체의 메서드와 해당 객체가 작성된 인스턴스의 메서드입니다.일반적으로 서로 다른 실례 대상에 사용할 수 있는 방법.
Object 메서드
Object.assign(targetObj,copyObg)
한 대상의 방법을 다른 대상에 복사하다function Fruit(name) {
this.name = name;
}
Fruit.prototype.sayName = function () {
console.log(this.name);
}
var Apple = {
color:"red"
}
var ft = new Fruit("apple");
Object.assign(Apple,ft); // ft Apple
console.log(Apple);
Object.keys()
대상의 모든 속성 이름을 가져올 수 있는 그룹을 가져옵니다. 대상의 원형에 있는 속성은 가져올 수 없습니다.function Plant(){
this.desc = " "
}
Plant.prototype.sayHi = function () {
console.log("hi");
}
function Apple() {
this.desc = " ";
Plant.call(this);
}
Apple.prototype = Object.create(Plant.prototype);
Apple.prototype.constructor = Apple;
// Object.keys()
var bigApple = new Apple();
console.log(bigApple); // Apple{desc: " "}
console.log(Object.keys(bigApple)); // ["desc"]
Object.getOwnPropertyNames()
대상 자체의 속성을 가져옵니다. 대상의 원형적인 속성을 포함하지 않습니다. console.log(Object.getOwnPropertyNames(bigApple)); // ["desc"]
Object.getPrototypeOf()
객체 원형 가져오기function Plant(){
this.desc = " "
}
var obj = new Plant();
console.log(obj.__proto__ === Object.getPrototypeOf(obj)); // true
console.log(Plant.prototype === Object.getPrototypeOf(obj))// true
실례의 __proto__
속성과 같다
Object.setPrototypeOf()
객체의 원형 설정//
var obj1 = {
name:"obj1"
};
var obj2 = {
age:18
}
Object.setPrototypeOf(obj1,obj2);
console.log(Object.getPrototypeOf(obj1) === obj2); // true
obj1 대상의 원형을 obj2로 설정합니다
new 원리
new 한 대상의 원리는 사실:1.빈 객체 obj 2.이 대상의 원형을 Plant.prototype
3으로 설정합니다.구조 함수Plant
를 사용하여 대상을 초기화합니다.(구조 함수를 호출하여this지향을obj대상으로 수정하면 됩니다)function Plant(){
this.desc = " "
}
// var plt = new Plant;
var obj = {};
Object.setPrototypeOf(obj,Plant.prototype);
Plant.call(obj);
console.log(obj.desc); //
console.log(obj instanceof Plant); // true
Object.create()
대상을 불러옵니다. 이 대상을 원형으로 새 대상을 만듭니다.var obj1 = {
name:"obj1"
};
var obj2 = Object.create(obj1);
// getPrototypeOf
console.log(Object.getPrototypeOf(obj2) === obj1); // true
Object 인스턴스 메서드
대상 실례상의 방법
valueOf()
계산식에서만 대상이 이 방법을 사용해서 대상을 값으로 변환한다var obj1 = {
name:"obj1"
};
console.log(obj1.valueOf()); // {name: "obj1"}
obj1.valueOf = function () {
return 3;
}
console.log(obj1+2); // 5
toString() 및 toLocaleString()
대상의 문자열 형식을 되돌려줍니다. 기본적으로 형식 문자열을 되돌려줍니다.var obj1 = {
name:"obj1"
};
function fn() { };
var date = new Date();
console.log(obj1.toString()); // [object Object] -》
console.log(String("33").toString()); // 33 =》
console.log(Number(128).toString()); // 128 =》
console.log([1,3,5].toString()); // 1,3,5 =》 , , join(",")
console.log(fn.toString()); // function fn() { } =》
console.log(date.toString()); // Sat May 09 2020 19:09:55 GMT+0800 ( ) =》
서로 다른 유형의 대상에 대해 서로 다른 값을 되돌려줍니다
toLocaleString
로컬 습관을 사용하여 반환 값을 정의합니다.보통 시간, 그룹, 숫자에 대해 이 방법을 맞춤형으로 만들었다// toLocalString
console.log(Number(128).toLocaleString()); // 128
console.log([1,3,5].toLocaleString()); // 1,3,5
console.log(date.toLocaleString()); // 2020/5/9 7:13:24 =》
isPrototypeof()
a가 b의 원형인지 아닌지를 판단하다var obj1 = {
name:"obj1"
};
var obj2 = {
age:18
}
Object.setPrototypeOf(obj1,obj2); // obj1 obj2
console.log(obj2.isPrototypeOf(obj1)); // true
console.log(Object.prototype.isPrototypeOf(obj1)); // true Object.prototype obj1
사실 원형 체인 해석에 따르면 Object.prototype
는 모든 대상의 원형 대상이다.
hasOwnProperty()
이 실례가 자신의 속성이 있는지 아닌지를 판단하다var obj1 = {
name:"obj1"
};
var obj2 = {
age:18
}
Object.setPrototypeOf(obj1,obj2); // obj1 obj2
console.log(obj1.hasOwnProperty("name")); // true
console.log(obj1.hasOwnProperty("age")); // false
이 방법은 하나의 속성이 그 대상의 자신인지 아닌지를 판단하는 데 쓰이는 것이지 계승하는 방법이 아니다.
속성 객체 설명자
속성 대상 설명자는 일반적으로 대상의 한 속성이 수정, 삭제, 열거 등 조작을 할 수 있는지 제어하는 데 사용된다.
Object.getOwnPropertyDescriptor()
객체의 속성을 가져오는 속성 설명자 매개 변수는 한 객체, 두 번째 매개 변수는 객체의 속성입니다.var obj1 = {
name:"haha"
}
// obj1 name
console.log(Object.getOwnPropertyDescriptor(obj1,"name"));
// {value: "haha", writable: true, enumerable: true, configurable: true}
console.log(obj1.propertyIsEnumerable("name")); // true
Object.getOwnPropertyNames()
열거 가능한 속성과 옮길 수 없는 속성 가져오기var obj1 = {
name:"haha"
}
Object.defineProperty(obj1,"age",{
value:18,
writable:false,
enumerable:true
})
console.log(Object.getOwnPropertyNames(obj1)); // ["name", "age"]
propertyIsEnumerable()
대상의 매거 가능 여부를 판단하려면 대상 자체의 속성만 판단할 수 있고, 매거할 수 없는 속성이나 계승된 속성은 일률적으로false로 되돌아갈 수 있으며 구체적으로 설정할 수 있는 속성은 다음과 같다.
속성 이름
값
역할
value
“haha”
객체 값
writable
true
이 속성의 쓰기 가능 여부를 설정합니다.
enumerable
true
이 속성을 매거할 수 있는지 설정합니다. (예: for in
대상을 훑어볼 때 이 속성으로 훑어보기)
configurable
true
구성 가능, 객체 삭제 가능
set
undefined
객체 등록 정보를 설정할 때 호출합니다(예: obj.name=123
.
get
undefined
대상 속성을 가져올 때 호출합니다. 예를 들어: obj.name
주의
function Fruit(name) {
this.name = name;
}
Fruit.prototype.sayName = function () {
console.log(this.name);
}
var Apple = {
color:"red"
}
var ft = new Fruit("apple");
Object.assign(Apple,ft); // ft Apple
console.log(Apple);
function Plant(){
this.desc = " "
}
Plant.prototype.sayHi = function () {
console.log("hi");
}
function Apple() {
this.desc = " ";
Plant.call(this);
}
Apple.prototype = Object.create(Plant.prototype);
Apple.prototype.constructor = Apple;
// Object.keys()
var bigApple = new Apple();
console.log(bigApple); // Apple{desc: " "}
console.log(Object.keys(bigApple)); // ["desc"]
function Plant(){
this.desc = " "
}
var obj = new Plant();
console.log(obj.__proto__ === Object.getPrototypeOf(obj)); // true
console.log(Plant.prototype === Object.getPrototypeOf(obj))// true
//
var obj1 = {
name:"obj1"
};
var obj2 = {
age:18
}
Object.setPrototypeOf(obj1,obj2);
console.log(Object.getPrototypeOf(obj1) === obj2); // true
function Plant(){
this.desc = " "
}
// var plt = new Plant;
var obj = {};
Object.setPrototypeOf(obj,Plant.prototype);
Plant.call(obj);
console.log(obj.desc); //
console.log(obj instanceof Plant); // true
var obj1 = {
name:"obj1"
};
var obj2 = Object.create(obj1);
// getPrototypeOf
console.log(Object.getPrototypeOf(obj2) === obj1); // true
var obj1 = {
name:"obj1"
};
console.log(obj1.valueOf()); // {name: "obj1"}
obj1.valueOf = function () {
return 3;
}
console.log(obj1+2); // 5
var obj1 = {
name:"obj1"
};
function fn() { };
var date = new Date();
console.log(obj1.toString()); // [object Object] -》
console.log(String("33").toString()); // 33 =》
console.log(Number(128).toString()); // 128 =》
console.log([1,3,5].toString()); // 1,3,5 =》 , , join(",")
console.log(fn.toString()); // function fn() { } =》
console.log(date.toString()); // Sat May 09 2020 19:09:55 GMT+0800 ( ) =》
// toLocalString
console.log(Number(128).toLocaleString()); // 128
console.log([1,3,5].toLocaleString()); // 1,3,5
console.log(date.toLocaleString()); // 2020/5/9 7:13:24 =》
var obj1 = {
name:"obj1"
};
var obj2 = {
age:18
}
Object.setPrototypeOf(obj1,obj2); // obj1 obj2
console.log(obj2.isPrototypeOf(obj1)); // true
console.log(Object.prototype.isPrototypeOf(obj1)); // true Object.prototype obj1
var obj1 = {
name:"obj1"
};
var obj2 = {
age:18
}
Object.setPrototypeOf(obj1,obj2); // obj1 obj2
console.log(obj1.hasOwnProperty("name")); // true
console.log(obj1.hasOwnProperty("age")); // false
var obj1 = {
name:"haha"
}
// obj1 name
console.log(Object.getOwnPropertyDescriptor(obj1,"name"));
// {value: "haha", writable: true, enumerable: true, configurable: true}
console.log(obj1.propertyIsEnumerable("name")); // true
var obj1 = {
name:"haha"
}
Object.defineProperty(obj1,"age",{
value:18,
writable:false,
enumerable:true
})
console.log(Object.getOwnPropertyNames(obj1)); // ["name", "age"]
defineProperty()
객체의 속성을 정의하는 속성 설명자 매개 변수는 객체, 매개 변수 2는 속성, 매개 변수 3은 객체 설명자
var obj1 = {
name:"haha"
}
Object.defineProperty(obj1,"age",{
value:18,
writable:false,
enumerable:true
})
console.log(Object.getOwnPropertyDescriptor(obj1,"age"));
// :{value: 18, writable: false, enumerable: true, configurable: false}
정의되지 않은 속성 설명자에 대해false로 기본값 설정
defineProperties()
여러 객체 속성을 정의하는 속성 설명자 매개 변수 1은 객체이고 2는 키 값 쌍 목록입니다(키는 속성 이름, 값은 속성 설명자).
var obj1 = {
name:"haha"
}
Object.defineProperties(obj1,{
p1:{
value:"hello",
writable:true
},
p2:{
get:function () {
return this.name + " is sb"
},
set:function(newVal){
console.log("set");
this.name = newVal
}
}
})
console.log(Object.getOwnPropertyDescriptor(obj1,"p1"));
// {value: "hello", writable: true, enumerable: false, configurable: false}
console.log(Object.getOwnPropertyDescriptor(obj1,"p2"));
// {enumerable: false, configurable: false, get: ƒ, set: ƒ}
console.log(obj1.p2); // haha is sb
obj1.p2 = "apple"; // set
총결산
사례: Object 방법을 사용하여 객체의 깊이 있게 복사
얕은 복사와 깊은 복사 안내
js에는 기본 데이터 형식과 인용 데이터 형식이 있습니다
딥 카피
기본 데이터 형식은 등호를 사용하여 대상을 직접 복제한다
let a = 22;
let b = a;
b = 4;
console.log(a); // 22
console.log(b); // 4
b a의 값을 복제한 후 원 대상 a와 아무런 관계가 없다.b의 값이 수정되면 a의 값도 변하지 않는다.
얕은 복사
인용 형식 (대상, 그룹) 이라면, 직접 복사하면 변수는 대상의 메모리 주소가 아니라 대상의 값을 얻을 수 있습니다
//
let arr1 = [1,4,5];
let arr2 = arr1;
arr2.push(66);
console.log(arr1); // [1, 4, 5, 66]
console.log(arr2); // [1, 4, 5, 66]
//
let obj1 = {
name:"apple",
age:12
};
let obj2 = obj1;
obj2.name = "banana";
console.log(obj1); // {name: "banana", age: 12}
console.log(obj2); // {name: "banana", age: 12}
실현 방법
대상의 속성을 순서대로 두루 훑어보고 하나의 대상인지 아닌지를 판단하면 두루 훑어본다.그렇지 않으면 새 객체로 복사됩니다.
function deepCopy(oldObj,newObj) { //oldObj: newObj: ,
for(key in oldObj){
// hasOwnProperty ,
if(oldObj.hasOwnProperty(key)){
if(oldObj[key] && typeof oldObj[key] === "object"){
//
newObj[key] = oldObj[key].constructor === Array?[]:{};
// , /
deepCopy(oldObj[key],newObj[key]);
}else{ // ,
newObj[key] = oldObj[key];
}
}
}
return newObj
}
var obj1 = {
name:"apple",
color:['blue','green'],
prop:{
num:12
}
};
var obj2 = deepCopy(obj1,{});
console.log(obj1); // {name: "apple", color: Array(2), prop: {…}}
console.log(obj2); // {name: "apple", color: Array(2), prop: {…}}
obj2.name = "banana";
obj2.color.pop();
console.log(obj1); // {name: "apple", color: Array(2), prop: {…}}
console.log(obj2); // {name: "banana", color: Array(1), prop: {…}}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Object 객체 메소드 요약주로 Object 객체의 메서드와 해당 객체가 작성된 인스턴스의 메서드입니다.일반적으로 서로 다른 실례 대상에 사용할 수 있는 방법. 대상의 모든 속성 이름을 가져올 수 있는 그룹을 가져옵니다. 대상의 원형에 있는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.