한 개체에서 다른 개체로 기능을 복사하고 있습니다.함수를 익명화하고 개체에서 이름을 제거하는 방법?
var o1 = {
a: function() {
alert("Hello World");
},
b: 123,
c: "Some string"
}
var o2 = {};
for (var key in o1) {
if ("function" == typeof o1[key]) {
o2[key] = o1[key];
}
}
console.log(o2.a); //output: function o1.a()
이 두 기능은 어떤 방법으로 연결하지 않는 것,하지만이 : 문제는 그들이 소스 객체에 익명 동안, 그들은 대상 객체에 이름을 가지고있다 적어도 자극적입니다. 또한 Firefox Developer Edition은 콘솔에 로그인하고 이름을 클릭하면 기능의 출처를 알 수 있습니다. 그리고 나는 이것이 어떻게 든 다른 나쁜 영향을 미칠지 모른다.
그래서 함수를 복사하여 익명으로 유지할 수 있다면 좋습니다!
. 예를 들어, 위의 코드는'foo' 함수 안에 싸여 있습니다. 콘솔 출력은'function foo/o1.a()'입니다. – jaySon
Chrome 및 Firefox에서 방금 테스트했습니다. 두 버전 모두 다른 객체에 넣을 때 함수에 이름을 추가하지 않습니다. 그리고 소스 함수가 복사되지 않았기 때문에 소스 함수가 어디에 있는지 항상 알 수 있습니다. 참조를 만드는 것입니다. 어쨌든, 왜 익명으로 유지하려고합니까? –
참조로 복사 ... – epascarello