1. 세 번째 코드 줄이 이해되지 않습니다.
세 번째 줄은 super_robot
에 프로토타입 객체로 추가하여 구현해야 합니다. super_robot
添加 data
作为原型对象。
那为什么不是 SuperRobot.__proto__=data;
而是say.__proto__=data;
그럼 왜 SuperRobot.__proto__=data;
가 아니고 say.__proto__=data;
인가요??
我想大声告诉你2017-05-18 11:00:53
이렇게 작성하는 것은 확장으로 간주할 수 없는 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와 동일합니다. 함수 인스턴스에 액세스할 수 있으므로 일반적으로 이와 같이 확장하지 않는 것이 좋습니다