javascript - 초보자님, 프로토타입 확장에 대한 기본적인 질문을 드리겠습니다. 몇 가지 안내를 해주실 수 있나요?
黄舟2017-05-18 10:58:53
0
3
526
1. 세 번째 코드 줄이 이해되지 않습니다. 세 번째 줄은 super_robot에 프로토타입 객체로 추가하여 구현해야 합니다. super_robot添加 data作为原型对象。 那为什么不是 SuperRobot.__proto__=data; 而是say.__proto__=data; 그럼 왜 SuperRobot.__proto__=data; 가 아니고 say.__proto__=data;인가요??
이렇게 작성하는 것은 확장으로 간주할 수 없는 super_robot의 프로토타입 체인을 다시 작성하는 것과 같습니다. 원래 super_robot.__proto__는 Function.prototype을 가리켰고, 다시 작성한 후에는 super_robot.__proto__가 들어오는 데이터 개체를 가리킨다고 할 수 있습니다. 다시 작성한 후에는 super_robot을 더 이상 실제 함수로 간주할 수 없습니다. 이제 호출, 적용, 바인딩 등과 같은 함수 프로토타입의 메서드를 사용할 수 없습니다.
으아악
확장하면 say.__proto__.name = name, say.__proto__.age = age라고 써야 하는데 이는 Function.prototype.name = name, Function.prototype.age = age와 동일합니다. 함수 인스턴스에 액세스할 수 있으므로 일반적으로 이와 같이 확장하지 않는 것이 좋습니다
으아아아
이번에는 누구를 추가해야 할까요
super
等于什么?是不是等于
Fun
内声明的a?所以
__proto_
.이렇게 작성하는 것은 확장으로 간주할 수 없는 super_robot의 프로토타입 체인을 다시 작성하는 것과 같습니다. 원래 super_robot.__proto__는 Function.prototype을 가리켰고, 다시 작성한 후에는 super_robot.__proto__가 들어오는 데이터 개체를 가리킨다고 할 수 있습니다. 다시 작성한 후에는 super_robot을 더 이상 실제 함수로 간주할 수 없습니다. 이제 호출, 적용, 바인딩 등과 같은 함수 프로토타입의 메서드를 사용할 수 없습니다.
으아악확장하면 say.__proto__.name = name, say.__proto__.age = age라고 써야 하는데 이는 Function.prototype.name = name, Function.prototype.age = age와 동일합니다. 함수 인스턴스에 액세스할 수 있으므로 일반적으로 이와 같이 확장하지 않는 것이 좋습니다
SuperRobot은 단지 공장 기능일 뿐이며, 그것이 반환하는 것은 핵심입니다