js에서 String.prototype.format 유사.net의string.formitz 효과

4661 단어
String.prototype.format = function(args) { if (arguments.length>0) { var result = this; if (arguments.length == 1 && typeof (args) == "object") { for (var key in args) { var reg=new RegExp ("({"+key+"})","g"); result = result.replace(reg, args[key]); } } else { for (var i = 0; i < arguments.length; i++) { if(arguments[i]==undefined) { return ""; } else { var reg=new RegExp ("({["+i+"]})","g"); result = result.replace(reg, arguments[i]); } } } return result; } else { return this; } } 예:
//두 가지 호출 방식 var template1 = "나는 {0}, 올해 {1}이다."var template2 = "나는 {name}, 올해 {age}이다."var result1=template1.format("loogn",22); var result2=template1.format({name:"loogn",age:22});//두 결과 모두'loogn입니다. 올해 22살입니다'.
 
JavaScript는 객체 기반이며 모든 요소는 객체로 볼 수 있습니다.그러나 유형과 대상은 다르다.
본고에서 우리는 토론 유형과 대상의 일부 특징을 제외하고 더욱 중요한 것은 어떻게 좋은 것을 쓰고 중용에 유리한 유형을 쓰는지 연구하는 것이다.어쨌든 자바스크립트와 같은 유행하는 스크립트 언어가 좋은 봉인을 하고 방대한 유형 라이브러리를 형성할 수 있다면 중용에 매우 의미가 있다.인터넷에는 프로토타입에 대한 글이 많아서 핵심적인 사상을 이해하지 못했다.마지막으로 많은 예 코드를 쓴 후에야 알 수 있듯이prototype은 유형에만 사용할 수 있습니다.다음은 유형과 대상에 대한 예입니다. 예를 보고 나면 유형과 대상 간의 관계를 이해하기 쉽습니다.

1 프로토타입을 사용하여 형식에 비헤이비어 추가

Object.prototype.Property = 1;
Object.prototype.Method = function ()
{
    alert(1);
};
var obj = new Object();
alert(obj.Property);
obj.Method();

형식에 proptotype를 사용하여 형식에 행동을 추가할 수 있습니다.이러한 행위는 유형의 실례에서만 나타난다.실례적으로 프로토타입을 사용할 수 없습니다. 그렇지 않으면 컴파일 오류가 발생합니다.
JS에서 허용하는 유형은 Array, Boolean, Date, Enumerator, Error, Function, Number, Object, RegExp, String

2 유형에 대해 정적 속성 및 방법 정의

Object.Property = 1;
Object.Method = function()
{
    alert(1);
}
alert(Object.Property);
Object.Method();

형식에 대해'정적'속성과 방법을 정의할 수 있습니다. 형식에 직접 호출하면 됩니다. 실례는 형식의 정적 속성이나 방법을 호출할 수 없습니다. 그렇지 않으면 대상이 정의하지 않은 오류가 발생합니다.

3 JavaScript에서 유형 정의

function Aclass()
{
    this.Property = 1;
    this.Method = function()
    {
        alert(1);
    }
}
var obj = new Aclass();
alert(obj.Property);
obj.Method();

 
이 예는 일반적인 JavaScript에서 유형을 정의하는 방법을 보여 준다

4 프로토타입을 사용하여 사용자 정의 형식에 속성과 방법을 추가합니다


[코드 축소]
function Aclass() { this.Property = 1; this.Method = function() { alert(1); } }
Aclass.prototype.Property2 = 2; Aclass.prototype.Method2 = function() { alert(2); } var obj = new Aclass(); alert(obj.Property2); obj.Method2();
[코드 축소]
외부에서 프로토타입을 사용하여 사용자 정의 형식에 속성과 방법을 추가할 수 있습니다.외부에서 프로토타입을 통해 기존의 사용자 정의 형식의 속성이나 방법을 바꿀 수 없습니다.

5 객체에서 기존 유형의 속성과 방법을 변경합니다.


[코드 축소]
function Aclass() { this.Property = 1; this.Method = function() { alert(1); } } var obj = new Aclass();
obj.Property = 2; obj.Method = function() { alert(2); } alert(obj.Property); obj.Method();
[코드 축소]
그러나 객체에서 기존 속성을 변경할 수 있습니다.(이것은 확실하다), 대상에 있어서 기존의 방법을 바꿀 수도 있다.(보편적인 대상을 향한 개념과 다르다)

6 객체에 속성 또는 메서드 추가


[코드 축소]
function Aclass() { this.Property = 1; this.Method = function() { alert(1); } } var obj = new Aclass();
obj.Property2 = 2; obj.Method2 = function() { alert(2); } alert(obj.Property2); obj.Method2();
[코드 축소]
객체에 속성이나 메서드를 추가할 수도 있습니다.

7 유형의 상속


[코드 축소]
function AClass() { this.Property = 1; this.Method = function() { alert(1); } } function AClass2() { this.Property2 = 2; this.Method2 = function() { alert(2); } }
AClass2.prototype = new AClass(); var obj = new AClass2(); alert(obj.Property); obj.Method(); alert(obj.Property2); obj.Method2();
[코드 축소]
이 예는 한 유형이 어떻게 다른 유형에서 계승되는지 설명한다.

8 하위 클래스는 부모 클래스의 속성이나 방법을 다시 쓰는 방법


[코드 축소]
function AClass() { this.Property = 1; this.Method = function() { alert(1); } } function AClass2() { this.Property2 = 2; this.Method2 = function() { alert(2); } } AClass2.prototype = new AClass();
AClass2.prototype.Property = 3; AClass2.prototype.Method = function() { alert(4); } var obj = new AClass2(); alert(obj.Property); obj.Method();
[코드 축소]
이 예는 하위 클래스가 부모 클래스의 속성이나 방법을 어떻게 다시 쓰는지 설명한다.
이를 통해 알 수 있듯이 자바스크립트가 실현할 수 있는 대상을 대상으로 하는 특징은 다음과 같다. · 공유 속성(public field)· 공유 방법(public Method)· 개인 속성(private field)· 방법 재부팅(method overload)·구조 함수(constructor)·사건(event)·단일 계승(single inherit)· 하위 클래스 부모 클래스를 다시 쓰는 속성이나 방법(override)·정적 속성 또는 방법(static member)
이 문서는 CSDN 블로그에서 왔으며, 전재하려면 출처를 명시하십시오.http://blog.csdn.net/czh_friend/archive/2007/04/16/1566319.aspx

좋은 웹페이지 즐겨찾기