예를 들어 Array
배열에 대한 함수를 정의해 보세요.
Array.prototype.in_array = 함수($string) { for (var i = 0; i {for (i = 0; i 참을 반환합니다;
}
}
거짓 반환;
}
전화만 하시면 됩니다
var a = 새 배열('a');
a.in_array('a');
존재하는지 확인하세요
예: 문자열
String.prototype.trim = 함수()
{
return this.replace(/^s*|s*$/g, '');
}
전화만 하시면 됩니다
var a = 'abcdefg';
a.trime();
이렇게 하면 양쪽 공백이 제거됩니다
사용자 정의 함수도 마찬가지입니다. 먼저 함수를 만들고 프로토타입을 사용하여 함수를 추가하세요.
JavaScript에서 객체를 정의하는 방법은 무엇인가요
1. 팩토리 메소드: 먼저 객체를 생성한 다음 객체에 메소드와 속성을 추가합니다. 클로저 후에는 new 연산자를 사용하여 객체를 생성하지 마세요. 이 접근 방식에는 팩토리 함수 내에서 메서드를 정의할 때와 같은 몇 가지 단점이 있지만 호출될 때마다 새 함수가 생성됩니다.
기능 팩토리(이름, 사람, 주소, 시간){
var tmp=새 개체;
tmp.name=이름;
tmp.person=사람;
tmp.address=주소;
tmp.workTime=function(){
alert("우리가 일을 시작하는 시간은" + 시간);
}
tmp 반환;
}
var Factory1 = Factory("마약", 100, "Huashan Rd", 10);
var Factory2 = Factory("TCMdrugs", 100, "hongqiao Rd", 11);
factory1.workTime();
factory2.workTime();//여기서 Factory1과 Factory2는 서로 다른 메소드를 가지고 있습니다
이 문제는 다음과 같은 방법으로 개선될 수 있지만 캡슐화가 부족합니다
기능 팩토리(이름, 사람, 주소, 시간){
var tmp=새 개체;
tmp.name=이름;
tmp.person=사람;
tmp.address=주소;
tmp.workTime=workTime();
tmp 반환;
}
workTime() 함수{
alert("우리가 일을 시작하는 시간은" + this.time);
}
2. 생성자 메서드는 생성자 내부에서 this 키워드를 사용하여 객체를 생성하는 것을 의미하며, 이를 사용할 때는 new 연산자를 통해 인스턴스화해야 합니다. 그러나 이 메소드 역시 팩토리 메소드와 동일한 문제점을 가지고 있는데, 생성자가 호출될 때마다 새로운 함수 객체가 생성되어 함수 생성이 반복된다는 점이다.
함수 구성(이름, 사람, 주소, 시간) { //여기에 코드 로직을 작성하세요. }
this.name=이름;
this.person=사람;
this.address=주소;
this.workTime=function(){
alert("우리가 일을 시작하는 시간은" + this.time);
};
}
3. 프로토타입 속성을 사용하여 속성과 메소드를 구현하면 인스턴스 오브를 통해 객체 유형을 확인할 수 있어 반복적으로 함수를 생성하는 문제를 해결할 수 있습니다. 그러나 매개변수를 전달하여 속성을 초기화할 수는 없다는 점에 유의해야 합니다.
기능 자동차(){
}
Car.prototype.color = "빨간색";
Car.prototype.doors = 4;
Car.prototype.mpg = 23;
Car.prototype.showColor = function() {
경고(this.color);
};
var car1 = 새 자동차();
var car2 = 새 자동차();
그런데 다음과 같은 상황이 발생하면 또 문제가 발생합니다
Car.prototype.drivers = ["mike", "sue"];
car1.drivers.push("매트");
alert(car1.drivers); //"mike,sue,matt" 출력
alert(car2.drivers); // "mike, sue, matt" 출력
drivers는 Array 객체에 대한 포인터이며 Car의 두 인스턴스는 모두 동일한 배열을 참조합니다.
4. 혼합 생성자/프로토타입 방법: 프로토타입 방법에 대한 솔루션
기능 자동차(sColor, iDoors, iMpg) { this.color = sColor; this.doors = iDoors; this.mpg = iMpg; }
this.color = sColor;
this.doors = iDoors;
this.mpg = iMpg;
this.drivers = ["마이크", "수"];
}
Car.prototype.showColor = 함수() { // 귀하의 코드 }
경고(this.color);
};
var car1 = new Car("빨간색", 4, 23);
var car2 = new Car("파란색", 3, 25);
car1.drivers.push("매트");
경고(car1.drivers);
경고(car2.drivers);
5. 동적 프로토타입 방법: 이는 이전 방법에서 발생하는 문제를 피하고 보다 친숙한 코딩 스타일을 제공하는 매우 권장되는 방법입니다.
기능 자동차(sColor, iDoors, iMpg) { this.color = sColor; this.doors = iDoors; this.mpg = iMpg; }
this.color = sColor;
this.doors = iDoors;
this.mpg = iMpg;
this.drivers = ["마이크", "수"];
if(Car.initialized 유형 == "정의되지 않음"){
Car.prototype.showColor = 함수() { // 귀하의 코드 }
경고(this.color);
};
Car.initialized = true;
}
}
var car1 = new Car("빨간색", 4, 23);
var car2 = new Car("파란색", 3, 25);
car1.drivers.push("매트");
경고(car1.drivers);
경고(car2.drivers);
6. 혼합 팩토리 방식: 팩토리 방식과 다소 유사하지만 인스턴스화에 new 키워드를 사용합니다. 팩토리 방식과 동일한 단점이 있지만 권장되지는 않습니다.
위 내용은 JavaScript는 클릭으로 호출할 수 있는 hide-like 메소드를 어떻게 정의합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!