Обучение javascript
можно условно разделить на 3 различные части: ядро (ECMAscript), текстовый объект (DOM), объект браузера (BOM).
Ядро (ECMAscript): ключевые слова, операторы, операторы, объект.
Текстовый объект (DOM): DOM будет планировать всю страницу в документ, состоящий из уровней узлов.
Синтаксический анализ соответствует стандарту W3C html dom:
В ссылке W3C dom особое внимание уделяется описанию узла DOM,
объекту браузера BOM, всплывающему новому браузеру, размеру настроек браузера.
Ядро (ECMAscript) Глобальный встроенный объект;
Методы: parseInt(), isNan(), encodeURI()... и т. д. — все это методы этого объекта.
Обратите особое внимание на eval(); символ динамического языка, такой как: eval("alert('hi')"); но этот метод очень злой (аспект безопасности)
Описание текстового объекта (DOM):
<bookstore> <book Category="cooking"> <title lang="en">Итальянский на каждый день</title> <author>Джиада Де Лаурентис</author> <year>2005</year> <price>30,00</price > </book> </книжный магазин>
1. Основы ECMAscript
$ Обозначение типа переменной на венгерском языке: var iOuouValue=100;
$ может заканчивать строку точкой с запятой или без нее, но тогда onsubmit="javascript:function();return false;"
$ ключевое слово;
"typeof" var test=1; alert(typeof testX); //выводим "неопределено"
"NaN" - не число -> isNan("blue"); //выводим "true" ->isNan("123") ; // вывод «ложь»
$ object; var o = new Object();
которую
мы обычно пишем, является объектом.
Эта var a = {name:"Liu Kaiyi"} эквивалентна var a = function(){this.name="Liu Kaiyi"};
name:"test", pass:"123456",addr:"bj"} //Что это? ! JSON
When var str = '{name:"test",pass:"123456",addr:"bj"}'
var objectBean = eval(str); //Вот объект objectBea.name, использующий
концепцию домена:
<тип SCRIPT = текст/Javascript>
вар sMessage = 'Привет';
функция setSomething() {
sColor = 'красный';
sMessage = 'Привет, мир!';
}
УстановитьЧто-то();
alert(sMessage); //Привет, мир!
оповещение (sColor); //красный
</SCRIPT> <SCRIPT type=text/javascript>
вар sMessage = 'Привет';
функция setSomething() {
вар sColor = 'красный';
sMessage = 'Привет, мир!';
}
УстановитьЧто-то();
alert(sMessage); //Привет, мир!
предупреждение(sColor); // ничего
</SCRIPT>
<SCRIPT type=text/javascript>
вар sMessage = 'Привет';
функция setSomething() {
вар sColor = 'красный';
var sMessage = 'Привет, мир!';
}
УстановитьЧто-то();
оповещение(sMessage); //Привет
предупреждение(sColor); // ничего
</СКРИПТ>
Закладываем основы объектно-ориентированного подхода: объектное применение типа объектного прототипа. Ссылка
// Простейшее наследование
Функция
Object.prototype.inObj = 1;
{
this.inA = 2;
}
А.прототип.инАПрото = 3;
B.prototype = new A // Подключаем A к цепочке прототипов B;
Б.прототип.конструктор = Б;
функция Б()
{
this.inB = 4;
}
Б.прототип.инБПрото = 5;
х = новый Б;
document.write(x.inObj + ', ' + x.inA + ', ' + x.inAProto + ', ' + x.inB + ', ' + x.inBProto);
//1, 2, 3, 4); , 5
//Повышаем уверенность http://www.json.org/json.js
Object.prototype.toJSONString = function (filter) { return JSON.stringify(this, filter }); Затем мы можем использовать bean.toJSONString(); не так ли?
$ аргументы ;
функция getFun(){alert(arguments.length);} ;
getFun("xx") //вывод 1
getFun("xx",23) //вывод 2
оператор $ по специальным инструкциям для
for(var i=0i<iCount;i++) или for(attr in object);
Если вам скучно, вы можете for( sProp in window ){alert(sProp+"Эй, пожалуйста!");} //Посмотрите на отражение javascript
Объектно-ориентированный:
var bean = new Bean();
Функция
фабричного метода
getAttr(){alert(this.attr)
}
Функция Bean (tattr) {
вар bean = новый объект;
bean.attr = tattr;
bean.getAttr = getAttr
;
}
По сути, это копия объектно-ориентированного подхода.
2. Создайте
функцию Bean(tattr){
this.attr = tattr;
bean.getAttr = function(){
alert(this.attr);
}
Выше 2,когда
объект Bean создан, метод будет «неоднократно генерировать функцию». "!
3. Функция режима прототипа
Bean(){}
Bean.prototype.attr = ""
Bean.prototype.getAttr=function(){alert(this.attr);};
Решить проблему «дубликата сгенерированной функции», но создать новую проблему Bean.prototype.getArray = new Array();
Его новые объекты bean1 и bean2 будут совместно использовать новое пространство Array (которое мы не хотим видеть).
4. Смешанная модель :) Хаха
function Bean(){
this.attr="";
this.getArray=новый массив;
}
Bean.prototype.getAttr=function(){alert(this.attr);}
5. Динамический прототип (обратите внимание, что теперь он действительно объектно-ориентированный!!!)
function Bean(){
this.attr= "";
this.getArray=new Array;
//загрузка класса при загрузке
if(typeof Bean._initialized == "undefined" ){
Bean.prototype.getAttr=function(){alert(this.attr);};
Bean._initialized = правда
}
}
/*************************************************** ***** ***************/
Наследование объектов
1. Олицетворение объекта! ! (Может поддерживать множественное наследование, подражатель очень мощный)
функция classA(sstr){
this.color = sstr;
this.sayColor = function(){
alert(this.color);
};
}
функция classC(){}
функция classB() {
this.newMethod = ClassA
this.newMethod();
удалить this.newMethod;
this.newMethod =ClassC;
this.newMethod();
удалить this.newMethod;
this.arrt = "Google";
}
2.call() apply() также является подражателем,
function classA(sstr){
this.color = sstr;
this.sayColor = function(str){
alert(str+this.color);
};
}
function classB(){
// this.newMethod =ClassA ;
// this.newMethod()
// удаляем this.newMethod ;
classA.call(this,"red");
//classA.apply(this,new Array(); "красный"))
this.arrt = "Baidu";
}
3. Цепочка прототипов православного наследования (но не поддерживает множественное наследование)
функция classA(){this.oo="test";}
classA.prototype.color = "красный";
класс функцииB(){}
classB.prototype = новый классA;
classB.prototype.sayName = функция(){
предупреждение(этот.цвет);
}
varbb = новый классB;
bb.sayName(); // вывод красного цвета
alert(bb.oo); //вывод тестового
оповещения(bb instanceof classA); //вывод true
предупреждение (bb экземпляр класса B); // вывод true
4. Если вы хотите больше наследства! ! А также поддерживает экземпляр
Метод смешивания:
класс функцииA(){}
класс функцииB(){}
класс функцииC(){
классA.call(это);
classC.call(это);
}
classC.prototype = new classA;//Обратите внимание, что instanceof можно использовать только для A