Javascript에서 문자열로 사용되는 변수 이름
Javascript에서 변수명을 문자열로 얻을 수 있는 방법이 있나요?(코코아 등)
저는 이렇게 하고 싶습니다.
var myFirstName = 'John';
alert(variablesName(myFirstName) + ":" + myFirstName);
--> myFirstName:John
갱신하다
자바스크립트로 브라우저와 다른 프로그램을 연결하려고 합니다.콜백 메서드를 위해 브라우저에서 다른 프로그램으로 인스턴스 이름을 보내고 싶습니다.
FooClass = function(){};
FooClass.someMethod = function(json) {
// Do something
}
instanceA = new FooClass();
instanceB = new FooClass();
doSomethingInAnotherProcess(instanceB); // result will be substituted by using instanceB.someMethod();
...
다른 프로그램에서:
evaluateJavascriptInBrowser("(instanceName).someMethod("resultA");");
PHP의 경우: 변수 이름을 PHP의 문자열로 가져오려면 어떻게 해야 합니까?
세스의 대답처럼, 하지만Object.keys()
★★★★
const varToString = varObj => Object.keys(varObj)[0]
const someVar = 42
const displayName = varToString({ someVar })
console.log(displayName)
다음 솔루션을 사용하여 문제를 해결할 수 있습니다.
const myFirstName = 'John'
Object.keys({myFirstName})[0]
// returns "myFirstName"
일반적으로 해시 테이블을 사용하여 이름을 특정 값에 매핑하고 둘 다 가져올 수 있습니다.
var obj = { myFirstName: 'John' };
obj.foo = 'Another name';
for(key in obj)
console.log(key + ': ' + obj[key]);
ES6에서는 다음과 같이 쓸 수 있습니다.
let myVar = 'something';
let nameObject = {myVar};
let getVarNameFromObject = (nameObject) => {
for(let varName in nameObject) {
return varName;
}
}
let varName = getVarNameFromObject(nameObject);
console.log(varName);
가장 보기 좋은 건 아니지만, 일을 해낼 수 있어.
이는 ES6의 객체 파괴 기능을 활용합니다.
자세한 내용은 이쪽:https://hacks.mozilla.org/2015/05/es6-in-depth-destructuring/
유효한 Javascript(변수, 클래스)에서 문자열을 가져옵니다.
const nameOf = (f) => (f).toString().replace(/[ |\(\)=>]/g,'');
예:
nameOf(() => myVariable) // myVariable
nameOf(() => myVariable.name) // myVariable.name
nameOf(() => myVariable.name.length) // myVariable.name.length
nameOf(() => myVariable.name[10]) // myVariable.name[10]
nameOf(() => MySuperClass) // MySuperClass
안전을 위해 [0]으로 인덱싱하는 것보다 pop이 더 나을 수 있습니다(변수가 null일 수 있음).
const myFirstName = 'John'
const variableName = Object.keys({myFirstName}).pop();
console.log(`Variable ${variableName} with value '${myFirstName}'`);
// returns "Variable myFirstName with value 'John'"
var x = 2;
for(o in window){
if(window[o] === x){
alert(o);
}
}
근데 '카림79'처럼 해야 될 것 같아요
이것은 기본 표현에 적용됩니다.
const nameof = exp => exp.toString().match(/[.](\w+)/)[1];
예
nameof(() => options.displaySize);
단편:
var nameof = function (exp) { return exp.toString().match(/[.](\w+)/)[1]; };
var myFirstName = 'Chuck';
var varname = nameof(function () { return window.myFirstName; });
console.log(varname);
var somefancyvariable = "fancy";
Object.keys({somefancyvariable})[0];
이것은 함수의 변수 이름을 반환하기 때문에 함수로 만들 수 없습니다.
// THIS DOESN'T WORK
function getVarName(v) {
return Object.keys({v})[0];
}
// Returns "v"
편집 : @Madeo 님의 지적에 감사드립니다.
function debugVar(varObj) {
var varName = Object.keys(varObj)[0];
console.log("Var \"" + varName + "\" has a value of \"" + varObj[varName] + "\"");
}
변수를 포함하는 단일 요소 배열을 사용하여 함수를 호출해야 합니다. debugVar({somefancyvariable});
집::Object.keys
만 할 수 keys
모든 브라우저에서 테스트했지만 댓글에 따르면 모든 곳에서 동작하지는 않습니다.
변수 이름을 문자열로 가져오는 가장 빠른 방법:
const name = obj => Object.keys(obj)[0];
const whatsMyName = "Snoop Doggy Dogg";
console.log( "Variable name is: " + name({ whatsMyName }) );
//result: Variable name is: whatsMyName
ECMAScript 5.1 이후 오브젝트를 사용할 수 있습니다.키를 눌러 개체에서 모든 속성의 이름을 가져옵니다.
다음은 예를 제시하겠습니다.
// Get John’s properties (firstName, lastName)
var john = {firstName: 'John', lastName: 'Doe'};
var properties = Object.keys(john);
// Show John’s properties
var message = 'John’s properties are: ' + properties.join(', ');
document.write(message);
Object.keys()를 사용하는 최선의 방법;
예: 글로벌 범위에서 다중 변수 이름을 가져옵니다.
// multi variables for testing
var x = 5 , b = true , m = 6 , v = "str";
// pass all variables you want in object
function getVarsNames(v = {}){
// getting keys or names !
let names = Object.keys(v);
// return array contain all names of variables
return names;
}
// testing if that work or not
let VarsNames = getVarsNames({x , b , m , v});
console.log(VarsNames); // output is array [x , b , m , v]
디버깅을 위해 variableName 및 variableValue를 인쇄하는 사용자를 위해 다음 함수를 사용합니다.
const printNameValue = (v)=> {
var varName = (v).toString().replace(/[ |\(\)=>]/g, '')
var varValue = (v)()
// neat : console.log(varName,varValue);
// with some coloring :
console.log("\033[1;96m[\033[1;33m " + varName + " :\033[0;0m " + varValue+"\033[1;96m ]\033[0;0m");
}
예:
const myNiceVariable = 1234
삭제:
printNameValue(()=> myNiceVariable )
결과:
javascript에서 유형을 반영하여 속성 및 메서드의 이름을 얻을 수 있지만 필요한 것은 와 같습니다.NET, javascript의 동적 특성 및 정적 시스템 부족으로 불가능할 것 같습니다.
저는 이것이 필요했고, 물건을 사용하기 싫었고, 다음과 같은 해결책을 생각해내면서 질문을 돌렸습니다.
변수 이름을 문자열로 변환하는 대신 문자열을 변수로 변환합니다.
이 기능은 변수 이름이 알려진 경우에만 작동합니다.
이걸 가져가세요.
var height = 120;
testAlert(height);
다음과 같이 표시됩니다.
height: 120
이것은 다음과 같이 실행할 수 있습니다.
function testAlert(ta)
{
a = window[ta];
alert(ta + ': ' + a);
}
var height = 120;
testAlert("height");
// displays: height: 120
그래서 끈을 사용해서"height"
그걸 변수로 만들고height
사용방법window[]
명령어를 입력합니다.
Internet Explorer(9, 10, 11), Google Chrome 5:
var myFirstName = "Danilo";
var varName = Object.keys({myFirstName:0})[0];
console.log(varName);
브라우저 호환성 테이블:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
함수가 서로 다른 글로벌 변수 값을 변경하는 함수를 쓸 때 항상 myfirst name이 아닌 어떤 일이 일어나도 first name이 됩니다.이거 나한테 효과가 있어.
jsfiddle에서 실행
var jack = 'jill';
function window_getVarName(what)
{
for (var name in window)
{
if (window[name]==what)
return(name);
}
return("");
}
document.write(window_getVarName(jack));
창문에 '잭'이라고 씁니다.
빠르고 더러운 것을 찾고 있다면 다음과 같이 하십시오.
var zox = 150;
cl("zox");
function cl(c) {
console.log(c + ': ' + this[c]); // zox: 150
}
누군가가 제안한 대로 JSON을 기반으로 이 기능을 만들었으며, 디버깅 요구에 맞게 작동합니다.
function debugVar(varNames){
let strX = "";
function replacer(key, value){
if (value === undefined){return "undef"}
return value
}
for (let arg of arguments){
let lastChar;
if (typeof arg!== "string"){
let _arg = JSON.stringify(arg, replacer);
_arg = _arg.replace('{',"");
_arg = _arg.replace('}',"");
_arg = _arg.replace(/:/g,"=");
_arg = _arg.replace(/"/g,"");
strX+=_arg;
}else{
strX+=arg;
lastChar = arg[arg.length-1];
}
if (arg!==arguments[arguments.length-1]&&lastChar!==":"){strX+=" "};
}
console.log(strX)
}
let a = 42, b = 3, c;
debugVar("Begin:",{a,b,c},"end")
아니, 없어.
게다가 당신이 글을 쓸 수 있다면variablesName(myFirstName)
변수 이름("my First Name")은 이미 알고 있습니다.
언급URL : https://stackoverflow.com/questions/4602141/variable-name-as-a-string-in-javascript
'source' 카테고리의 다른 글
해시맵에서1개의 엔트리를 반복하지 않고 취득하는 방법 (0) | 2022.09.08 |
---|---|
페이지 로드 후 JavaScript를 실행하는 방법 (0) | 2022.09.08 |
like 절 JPQL의 매개 변수 (0) | 2022.09.08 |
플랫 파일 데이터베이스 (0) | 2022.09.08 |
MySQL vs MySQLi(PHP 사용 시) (0) | 2022.09.08 |