에서 개체의 모든 기능을 가져, 자바 스크립트
Math.mymfunc = function (x) {
return x+1;
}
는 속성으로 처리됩니다 내가
for(var p in Math.__proto__) console.log(p)
을 쓸 때이 표시됩니다. 그러나 나머지 수학 함수는 그렇지 않습니다. Math 객체의 모든 함수를 얻으려면 어떻게해야합니까?
에서 개체의 모든 기능을 가져, 자바 스크립트
Math.mymfunc = function (x) {
return x+1;
}
는 속성으로 처리됩니다 내가
for(var p in Math.__proto__) console.log(p)
을 쓸 때이 표시됩니다. 그러나 나머지 수학 함수는 그렇지 않습니다. Math 객체의 모든 함수를 얻으려면 어떻게해야합니까?
Object.getOwnPropertyNames(Math);
당신이 후에 무엇이다.
이것은 EcmaScript 5 호환 브라우저를 다루는 모든 속성을 기록합니다. 당신에게 기능있는 속성의 이름의 배열을 제공
var objs = Object.getOwnPropertyNames(Math);
for(var i in objs){
console.log(objs[i]);
}
그것은 작동합니다! 좋은! – Andr
The specification은 Math
함수가 정의 된 속성으로 정의 된 것으로 나타나지 않습니다. 대부분의 구현에서는이 함수에 DontEnum
을 적용합니다. 즉, for(i in Math)
루프를 반복 할 때 객체에 나타나지 않습니다.
이 작업을 수행하는 데 필요한 정보를 물어보십시오. 이 많은 기능이 없으므로 단순히 배열에 그들에게 자신을 정의하기 위해 최선을 다 할 수있다 :
var methods = ['abs', 'max', 'min', ...etc.];
var functionNames = [];
Object.getOwnPropertyNames(obj).forEach(function(property) {
if(typeof obj[property] === 'function') {
functionNames.push(property);
}
});
console.log(functionNames);
. 받아 들여진 응답은 당신에게 모든 재산의 이름을 주었다.
궁금한 점, 왜 필요합니까? – zzzzBov
다른 개체 ('Math' 대'Object.prototype')를 열거하기 때문에'mymfunc'가 열거 형에 나타나서는 안됩니다. 콘솔에서 해당 코드를 실행하고있는 것처럼 보이지만 실제로 콘솔에 할당 결과가 표시됩니다. – user113716
하나의 가능한 사용 - JS 내장 객체 용 문서화 도구. 또 다른 사용법 - Math 객체 (계산기 등)에 UI를 작성하는 것 – James