>  기사  >  웹 프론트엔드  >  js에서 객체 생성과 관련하여 새로 추가해야 합니까?

js에서 객체 생성과 관련하여 새로 추가해야 합니까?

亚连
亚连원래의
2018-06-11 11:58:141897검색

이 글은 주로 js 생성자가 생성한 객체에 new를 추가하거나 추가하지 않는 문제에 대한 자세한 분석을 제공합니다. 이 측면에 관심이 있다면 참고하세요.

오늘 이 질문을 봤습니다.

다음 코드가 a.name = "name1"; b.name = "name2";

function Obj(name){
// TO DO
}
obj. /* TO DO */ = "name2";
var a = Obj("name1");
var b = new Obj;

를 지원하도록 "TO DO"에 내용을 입력하세요. 새로운 운영자는 무슨 일이 일어났나요?

새 객체를 생성합니다.

생성자의 범위를 새 객체에 할당합니다(그래서 이는 새 객체를 가리킵니다).

생성자에서 코드를 실행합니다(이 새 객체에 속성을 추가합니다). 새로운 개체.

질문 2: new 연산자 없이 생성자를 직접 실행하면 어떻게 되나요?

function Obj(name){
this.name = name;
console.log(this); // 严格模式下是undefined 非严格模式下是window对象
}
var a = Obj("name1");
console.log(a); // 结果 => undefined
아, 그냥 일반 함수 호출로 실행되는 것으로 밝혀졌습니다. Obj에는 반환 값이 없으므로 a는 정의되지 않습니다.

둘의 차이점 요약

new 연산자를 사용하여 객체를 생성하고 생성자가 값을 반환하지 않거나 기본 데이터 유형을 반환한 후 다음 예와 같이 객체를 반환합니다.

function Obj(name){
this.name = name;
}
var b = new Obj;
console.log(b); // Obj { name: undefined }
function Obj(name){
this.name = name;
return 'chic';
}
var b = new Obj;
console.log(b); // 同上

If 생성자는 참조 유형을 반환합니다.

function Obj(name){
this.name = name;
return {};
}
var b = new Obj;
console.log(b); // {}

요약

new를 추가하지 않고 생성자를 실행하는 경우 반환 값은 반환 값이 기본 데이터 유형인 경우 new 키워드로 생성자를 실행한 생성자의 실행 결과입니다. 이면 반환 값이 무시됩니다. 참조 유형이 반환되면 해당 참조 유형이 반환됩니다.

그럼 질문에 대한 답이 있으신가요?

참고 답변:

function Obj(name){
this.name = name;
return this;
}
Obj.prototype.name = "name2";
var a = Obj("name1");
var b = new Obj;

위 내용은 제가 모두를 위해 정리한 내용입니다. 앞으로 모든 분들께 도움이 되길 바랍니다.

관련 기사:

WeChat 애플릿에서 이미지 미리보기 기능을 구현하는 방법

jquery.picsign에서 이미지 주석 구성요소를 사용하는 방법

webpack을 통해 koa2 프레임워크 앱을 패키징하는 방법, 무엇을 해야 할까요? 그래요?

Vue 컴포넌트 개발 아이디어에 대한 자세한 해석

위 내용은 js에서 객체 생성과 관련하여 새로 추가해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.