Rumah > hujung hadapan web > tutorial js > Penjelasan terperinci tentang Objek dalam kemahiran system_javascript jenis JavaScript

Penjelasan terperinci tentang Objek dalam kemahiran system_javascript jenis JavaScript

WBOY
Lepaskan: 2016-05-16 15:21:16
asal
1521 orang telah melayarinya

Perkataan sebelumnya

Dalam JavaScript, objek adalah raja; hampir semua dalam Javascript adalah objek atau berfungsi seperti objek. Jika anda memahami objek, anda memahami Javascript. Dalam JavaScript, jenis rujukan ialah struktur data yang digunakan untuk menyusun data dan fungsi bersama-sama Ia juga sering dipanggil kelas. Jenis rujukan kadangkala dipanggil definisi objek kerana ia menerangkan sifat dan kaedah kelas objek

Kebanyakan nilai jenis rujukan adalah contoh jenis Objek, selain itu, Objek juga merupakan jenis yang paling biasa digunakan dalam JavaScript. Walaupun kejadian Objek tidak mempunyai banyak fungsi, ia sememangnya sesuai untuk menyimpan dan memindahkan data dalam aplikasi

Buat objek

Terdapat dua cara untuk mencipta jenis Objek

[1]Pembina objek

var person = new Object();
//如果不给构造函数传递参数可以不加括号 var person = new Object;
person.name = 'bai';
person.age = 29; 
//创建无属性的空对象
var cody1 = new Object();
var cody2 = new Object(undefined);
var cody3 = new Object(null);
console.log(typeof cody1,typeof cody2, typeof cody3);//object object object 
//创建string、number、array、function、boolean、regex
console.log(new Object('foo'));
console.log(new Object(1));
console.log(new Object([]));
console.log(new Object(function(){}));
console.log(new Object(true));
console.log(new Object(/\bbt[a-z]+\b/));
Salin selepas log masuk

[Nota] Pembina Object() itu sendiri ialah objek, dan pembina ialah objek yang dicipta berdasarkan pembina Fungsi

[2]Gunakan literal objek

Javascript menyediakan pintasan yang dipanggil literal untuk mencipta kebanyakan nilai objek asli. Menggunakan literal hanya menyembunyikan

yang sama seperti menggunakan operator baharu

Proses asas

var person = {
name : 'bai',
age : 29,
5 : true
};
Salin selepas log masuk

[Nota] Gunakan koma dalam literal objek untuk memisahkan sifat yang berbeza, tetapi menambah koma selepas sifat terakhir akan menyebabkan ralat dalam IE7

Gunakan kaedah literal objek untuk mentakrifkan objek, dan nama atribut akan ditukar secara automatik menjadi rentetan

//同上
var person = {
'name' : 'bai',
'age' : 29,
'5' : true
};
Salin selepas log masuk

Jika anda membiarkan pendakap kerintingnya kosong, anda boleh menentukan objek yang mengandungi hanya sifat dan kaedah lalai

//等价于var person = new Object();
var person = {}; 
[tips]使用对象字面量封装多个可选参数
function displayInfo(args){
var output = '';
if(typeof args.name == 'string'){
output += 'name:' + args.name +'\n';
}
if(typeof args.age == 'number'){
output += 'Age:' + args.age + '\n';
}
console.log(output);
};
displayInfo({
name: 'Nicholas',
age: 29
});
displayInfo({
name: 'match'
});
Salin selepas log masuk

Mod lulus parameter di atas paling sesuai untuk situasi di mana sejumlah besar parameter pilihan perlu dihantar ke fungsi. Secara umumnya, walaupun parameter yang dinamakan mudah dikendalikan, ia boleh menjadi tidak fleksibel apabila terdapat berbilang parameter pilihan. Oleh itu, gunakan parameter formal untuk nilai yang diperlukan dan gunakan literal objek untuk merangkum berbilang parameter pilihan

Tetapkan objek

Terdapat dua cara untuk mengakses sifat objek Anda boleh menggunakan notasi titik atau notasi kurungan untuk mendapatkan, menetapkan atau mengemas kini sifat objek
.

Dua kelebihan kaedah kurungan segi empat sama ialah atribut boleh diakses melalui pembolehubah dan nama atribut boleh menjadi pengecam tidak sah Javascript

[Nota] Aksara Cina boleh wujud dalam pembolehubah, kerana aksara Cina adalah bersamaan dengan aksara dan dianggap sama seperti aksara Inggeris, jadi ia boleh ditulis sebagai orang.白 atau orang['白']

var myObject = {
123:'zero',
class:'foo'
};
console.log(myObject['123'],myObject['class']);//'zero' 'foo'
console.log(myObject.123);//报错
Salin selepas log masuk

Jika nilai dalam kurungan segi empat sama adalah jenis bukan rentetan, ia akan ditukar secara tersirat kepada rentetan menggunakan String() dan kemudian keluarkan jika ia adalah jenis rentetan, jika terdapat petikan, nilai asal akan dikeluarkan , jika tidak, ia akan dikenali sebagai pembolehubah Jika pembolehubah tersebut Jika ia tidak ditakrifkan, ralat akan dilaporkan

person[0] = 1; //[]中的数字不会报错,而是自动转换成字符串
person[a] = 1; //[]中符合变量命名规则的元素会被当成变量,变量未被定义,而报错
person[''] = 2; //[]中的空字符串不会报错,是实际存在的且可以调用,但不会在控制台右侧的集合中显示
person[undefined 或 null 或 true 或 false] = 4;// 不会报错,而是自动转换成字符串
person['白'] = 6; // 不会报错 
Salin selepas log masuk

Padam objek

Operator padam boleh digunakan untuk memadam sepenuhnya atribut daripada objek. Padam ialah satu-satunya cara untuk memadamkan harta daripada objek Menetapkan harta kepada tidak ditentukan atau null hanya boleh menukar nilai harta itu tanpa memadamkan harta daripada objek. delete hanya boleh memadam data di bawah objek, lima jenis nilai asas yang lain tidak boleh dipadamkan

[Nota] padam tidak akan memadamkan sifat yang terdapat pada rantai prototaip

var foo = {bar: 'bar'};
delete foo.bar;
console.log('bar' in foo);//false 
var a = 123;
delete a;
console.log(a);//123
Salin selepas log masuk

Jika anda mengisytiharkan pembolehubah a dalam keadaan global, ia bersamaan dengan data a di bawah objek tetingkap Anda boleh menetapkan nilai kepada tetingkap melalui atau a, dan nilai tetingkap. a dan a sentiasa sama, tetapi mereka tidak boleh dipadamkan

var a;
a = 10;
console.log(a,window.a);//10 10
window.a = 20;
console.log(a,window.a);//20 20
delete a ;
console.log(a,window.a);//20 20
delete window.a;
console.log(a,window.a);//20 20
Salin selepas log masuk

Jika anda menggunakan window.b untuk mengisytiharkan dan menetapkan nilai (b adalah bersamaan dengan mengisytiharkannya di bawah objek tetingkap), anda boleh memadamkannya dan menggunakan delete b dan delete window.b mempunyai kesan yang sama selepas pemadaman. console.log(b) menggesa pembolehubah Tidak wujud, console.log(window.b) menggesa undefined

window.b = 10;
console.log(b,window.b);//10 10
delete b;
console.log(b);//报错
console.log(window.b);//undefined 
window.b = 10;
console.log(b,window.b);//10 10
delete window.b;
console.log(b);//报错
console.log(window.b);//undefined 
Salin selepas log masuk

Bersarang objek

Objek boleh bersarang, tetapi nilai mesti diperolehi lapisan demi lapisan

var student = {
name : {
chinese : 1,
englisth : 2
},
sex : 1,
age : 26
}
Salin selepas log masuk

[Nota] Nilai hanya boleh diambil lapisan demi lapisan, seperti student.name.chinese, dan tidak boleh silang nama Gunakan student.chinese secara langsung, kerana mungkin juga terdapat unsur yang dipanggil cina di bawah tahap yang sama dengan nama

var object1 = {
object1_1:{
object1_1_1:{foo: 'bar'},
object1_1_2:{}
},
object1_2:{
object1_2_1:{},
object1_2_2:{}
}
};
console.log(object1.object1_1.object1_1_1.foo);//bar
Salin selepas log masuk

实例方法

  constructor:保存着用于创建当前对象的函数
  hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中(而不是在实例的原型中)是否存在。其中,propertyName必须以字符串形式指定

  isPrototypeOf(object):用于检查传入的对象是否是传入对象的原型

  propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用for-in语句来枚举。其中,propertyName必须以字符串形式指定

  toLocaleString():返回对象的字符串表示,该字符串与执行环境的地区对应

  toString():返回对象的字符串表示

  valueOf():返回对象的字符串、数值或布尔值表示,通常与toString()方法的返回值相同

var myObject = {
mark: true
};
console.log(myObject.constructor);//function Object(){}
console.log(myObject.hasOwnProperty('mark'));//true
console.log(Object.prototype.isPrototypeOf(myObject));//true
console.log(myObject.propertyIsEnumerable('mark'));//true
console.log(myObject.toLocaleString());//[object Object]
console.log(myObject.toString());//[object Object]
console.log(typeof myObject.valueOf(),myObject.valueOf());// object Object{mark:true}
Salin selepas log masuk

小结:

Object类型

  对象其实就是一组数据和功能的集合。对象可以通过执行new操作符后跟要创建的对象类型的名称来创建。而创建Object类型的实例并为其添加属性和(或)方法,就可以创建自定义对象。

var o = new Object(); 
Salin selepas log masuk

  Object的每个实例都具有下列属性和方法: 

  ● constructor——保存着用于创建当前对象的函数
   ● hasOwnProperty(propertyName)——用于检查给定的属性在当前对象实例中(而不是在实例的原型中)是否存在。其中,作为参数的属性名(propertyName)必须以字符串形式指定(例如:o.hasOwnProperty("name"))
   ● isPrototypeOf(object)——用于检查传入的对象是否是另一个对象的原型
   ● propertyIsEnumerable(propertyName)——用于检查给定的属性是否能够使用for-in语句来枚举 
  ● toString()——返回对象的字符串表示
   ● valueOf()——返回对象的字符串、数值或布尔值表示。通常与toString()方法的返回值相同。

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan