JavaScriptは動的な言語であり、実行時にオブジェクトに属性を追加することも、オブジェクトに属性を削除することもできます。
コードコピーは次のとおりです。
<html>
<head>
<script type = "text/javascript">
/*
// 01。オブジェクトを定義する最初の方法
var object = new object();
alert(object.username);
//01.1属性ユーザー名を追加します
object ["username"] = "liujianglong";
//object.username="liujl ";
alert(object.username);
//01.2属性のユーザー名を削除します
object.username; // username属性がオブジェクトオブジェクトから削除されました
alert(object.username);
*/
// 02。オブジェクトを定義する2番目の方法 - javascriptでオブジェクトを定義する最も一般的な方法
var object = {name: "zhangsan"、age:10、sex: "fale"};
alert(object.name);
alert(object.age);
アラート(object.sex);
</script>
</head>
<body>
</body>
</html>
プロパティ名:メソッド名も大丈夫です。関数自体がオブジェクトだからです
JavaScriptアレイソート
コードコピーは次のとおりです。
<!doctype html>
<html>
<head>
<script type = "text/javascript">
var array = [1,3,25];
///////////////////////////
var compare = function(num1、num2){
var temp1 = parseint(num1);
var temp2 = parseint(num2);
if(temp1 <temp2){
return -1;
} else if(temp1 == temp2){
0を返します。
}それ以外{
返品1;
}
}
//array.sort(compare);//01。関数名はオブジェクト参照です
/////////////////////////
// 02。匿名関数 方法////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
array.sort(function c(num1、num2){
var temp1 = parseint(num1);
var temp2 = parseint(num2);
if(temp1 <temp2){
return -1;
} else if(temp1 == temp2){
0を返します。
}それ以外{
返品1;
}
});
///////////////////////////
アラート(配列);
</script>
</head>
<body>
</body>
</html>
JavaScriptでオブジェクトを定義するいくつかの方法(JavaScriptにはクラスの概念がなく、オブジェクトのみがあります)
最初の方法:既存のオブジェクトに基づいてそのプロパティとメソッドを拡張する
コードコピーは次のとおりです。
<script type = "text/javascript">
// 01。既存のオブジェクトに基づいてプロパティとメソッドを拡張します
var object = new object();
object.username = "zhangsan";
object.sayname = function(name){
this.username = name;
アラート(this.username);
}
alert(object.username);
object.sayname( "lisi");
alert(object.username);
</script>
JavaScriptにはJavaのようなクラスの概念がないため、この方法には制限があります。クラスを書くと、新しいプロパティとメソッドを使用してオブジェクトを取得できます。
現時点では、Object2を持ちたい場合は、上記のコードの別のコピーのみを記述できますが、これはあまり良くありません。
2番目の方法:ファクトリーメソッド
Javaの静的な工場法に似ています。
コードコピーは次のとおりです。
<!doctype html>
<html>
<head>
<script type = "text/javascript">
//オブジェクトファクトリーメソッド
var createObject = function(){
var object = new object();
object.username = "zhangsan";
object.password = "123";
object.get = function(){
Alert(this.username+"、"+object.password);
}
オブジェクトを返します。
}
var obj1 = createObject();
var obj2 = createObject();
obj1.get();
//オブジェクト2のパスワードを変更します
obj2 ["password"] = "123456";
obj2.get();
</script>
</head>
<body>
</body>
</html>
上記の方法でオブジェクトを作成する際には欠点があります(各オブジェクトにはメモリを無駄にするGETメソッドがあります)、および改善された工場メソッド(すべてのオブジェクトがGETメソッドを共有):
コードコピーは次のとおりです。
<!doctype html>
<html>
<head>
<script type = "text/javascript">
//すべてのオブジェクトで共有されたメソッドを取得します
var get = function(){
アラート(this.username+"、"+this.password);
}
//オブジェクトファクトリーメソッド
var createObject = function(username、password){
var object = new object();
object.username = username;
object.password = password;
object.get = get; //注:メソッドブラケットはここには記述されていません
オブジェクトを返します。
}
//工場メソッドを介してオブジェクトを作成します
var object1 = createObject( "zhangsan"、 "123");
var object2 = createObject( "lisi"、 "345");
// GETメソッドを呼び出します
object1.get();
object2.get();
</script>
</head>
<body>
</body>
</html>
3番目の方法:コンストラクターによるオブジェクトの定義
コードコピーは次のとおりです。
<!doctype html>
<html>
<head>
<script type = "text/javascript">
var get = function(){
アラート(this.username+"、"+this.password);
}
関数担当者(ユーザー名、パスワード){
//コードの最初の行を実行する前に、JSエンジンは私たちのためにオブジェクトを生成します
this.username = username;
this.password = password;
this.get = get;
//ここでは、以前に生成されたオブジェクトを返すために使用される隠されたリターンステートメントがあります[これは工場パターンとは異なります]
}
var person = new Person( "Zhangsan"、 "123");
person.get();
</script>
</head>
<body>
</body>
</html>
4番目の方法:プロトタイプメソッドにオブジェクトを作成する
プロトタイプはオブジェクトオブジェクト内のプロパティであり、すべての人物はプロパティプロトタイプを持つこともできます。
オブジェクトのプロトタイプにいくつかのプロパティとメソッドを追加できます。
単にプロトタイプを使用してオブジェクトを作成することの欠点:①パラメーターを渡すことはできません。オブジェクトが作成された後にのみ値を変更できます
programエラーが発生する可能性があります
コードコピーは次のとおりです。
<!doctype html>
<html>
<head>
<script type = "text/javascript">
function person(){
}
person.prototype.username = "zhangsan";
person.prototype.password = "123";
person.prototype.getInfo = function(){
アラート(this.username+"、"+this.password);
}
var person1 = new Person();
var person2 = new Person();
person1.username = "lisi";
person1.getInfo();
person2.getInfo();
</script>
</head>
<body>
</body>
</html>
コードコピーは次のとおりです。
<!doctype html>
<html>
<head>
<script type = "text/javascript">
function person(){
}
person.prototype.username = new Array();
person.prototype.password = "123";
person.prototype.getInfo = function(){
アラート(this.username+"、"+this.password);
}
var person1 = new Person();
var person2 = new Person();
person1.username.push( "wanglaowu");
person1.username.push( "wanglaowu2");
person2.password = "456";
person1.getInfo();
person2.getInfo();
</script>
</head>
<body>
</body>
</html>
プロトタイプを使用してオブジェクトを定義するだけで、コンストラクター内の属性に初期値を割り当てることができなくなり、オブジェクトが生成された後にのみ属性値を変更できます。
5番目の方法:プロトタイプ +コンストラクターを使用してオブジェクトを定義します----------------------
オブジェクト間のプロパティは互いに干渉しません
オブジェクト間で同じ方法を共有します
コードコピーは次のとおりです。
<!doctype html>
<html>
<head>
<script type = "text/javascript">
//プロトタイプ +コンストラクターメソッドを使用してオブジェクトを定義します
function person(){
//コンストラクターの属性定義
this.username = new Array();
this.password = "123";
}
//メソッドはプロトタイプで定義されています
person.prototype.getInfo = function(){
アラート(this.username+"、"+this.password);
}
var p1 = new person();
var p2 = new person();
p1.username.push( "zhangsan");
p2.username.push( "lisi");
p1.getInfo();
p2.getInfo();
</script>
</head>
<body>
</body>
</html>
6番目の方法:動的プロトタイプ法--------推奨使用
コンストラクターでは、すべてのオブジェクトがフラグの量を通じてメソッドを共有し、各オブジェクトには独自の属性があります。
コードコピーは次のとおりです。
<!doctype html>
<html>
<head>
<script type = "text/javascript">
var person = function(username、password){
this.username = username;
this.password = password;
if(typeof person.flag == "undefined"){
Alert( "Invoked");
person.prototype.getInfo = function(){
アラート(this.username+"、"+this.password);
}
person.flag = true;
}
}
var p1 = new Person( "Zhangsan"、 "123");
var p2 = new person( "lisi"、 "456");
p1.getInfo();
p2.getInfo();
</script>
</head>
<body>
</body>
</html>