Javascript学习者看懂的几个例子
02月 20, 2008 on 11:05 pm | In js |1.关于prototype:这里prototype是javascript的一个特性,不是那个有名的prototype框架:
- <script type="text/javascript">
- var string="hello world";
- try{
- alert(string.phone());
- }catch(e){alert(e);}
- String.prototype.phone=function()
- {
- return "159-10957151";
- }
- alert(string.phone());
- </script>
2.关于变量作用域,和IE,firefox对js的不同处理,这里有几个例子,有几个是原来从别处看到的记的笔记,有的是我自己挖掘出来的.
2.1
- <script type="text/javascript">
- var deep_thought = {
- the_answer: 42,
- ask_question: function () {
- return this.the_answer;
- }
- };
- var the_meaning = deep_thought.ask_question();
- alert(the_meaning);
- </script>
2.2
- <script type="text/javascript">
- function test_this() {
- return this;
- }
- var i_wonder_what_this_is = test_this();
- alert(i_wonder_what_this_is);
- // result: [object window];
- </script>
2.3:
- <script type="text/javascript">
- function click_handler() {
- alert(this); // 弹出 window 对象
- }
- </script>
- ...
- <button id='thebutton' onclick='click_handler()'>Click me!</button>
2.4
- <script type="text/javascript">
- function click_handler(obj) {
- alert(obj);
- //result:[object HTMLButtonElement]
- }
- </script>
- ...
- <button id='thebutton' onclick='click_handler(this)'>Click me!</button>
2.5
- <button id='thebutton' onclick='click_handler(this)'>Click me!</button>
- <script type="text/javascript">
- function BigComputer(answer) {
- this.the_answer = answer;
- this.ask_question = function () {
- alert(this.the_answer);
- }
- }
- function addhandler() {
- var deep_thought = new BigComputer(42),
- the_button = document.getElementById('thebutton');
- the_button.onclick = deep_thought.ask_question;
- }
- window.onload = addhandler;
- //result [undefined]
- </script>
- ...
2.6
- <button id='thebutton' onclick='click_handler(this)'>Click me!</button>
- <script type="text/javascript">
- function BigComputer(answer) {
- var self=this;
- self.the_answer = answer;
- self.ask_question = function () {
- alert(self.the_answer);
- }
- }
- function addhandler() {
- var deep_thought = new BigComputer(42),
- the_button = document.getElementById('thebutton');
- the_button.onclick = deep_thought.ask_question;
- }
- window.onload = addhandler;
- //result [42]
- </script>
- ...
2.7
- <button id='thebutton' onclick='click_handler(this)'>Click me!</button>
- <script type="text/javascript">
- function btn_click(){
- alert(this);
- }
- function addhandler() {
- the_button = document.getElementById('thebutton');
- the_button.onclick = btn_click;
- }
- window.onload = addhandler;
- //result [undefined]
- </script>
- ...
2.8
- <button id='thebutton' onclick='click_handler(this)'>Click me!</button>
- <script type="text/javascript">
- function real_func()
- {
- alert(this);
- }
- function btn_click(){
- setTimeout(real_func,100);
- }
- function addhandler() {
- the_button = document.getElementById('thebutton');
- the_button.onclick = btn_click;
- }
- window.onload = addhandler;
- //result [undefined]
- </script>
- ...
2.9
- <button id='thebutton' onclick='click_handler(this)'>Click me!</button>
- <script type="text/javascript">
- Function.prototype.bind = function(obj) {
- var method = this,
- temp = function() {
- return method.apply(obj, arguments);
- };
- return temp;
- }
- var real_func=function()
- {
- alert(this);
- }
- function btn_click(){
- setTimeout( real_func.bind(this),100);
- }
- function addhandler() {
- the_button = document.getElementById('thebutton');
- the_button.onclick = btn_click;
- }
- window.onload = addhandler;
- //result [undefined]
- </script>
- ...
2.10
- <script>
- //** variables need to be defined
- alert(document); // [object HTMLdocument]
- alert(window.document); // [object HTMLdocument]
- alert(window.face); //pretty
- var face="pretty";
- alert(face); //pretty
- alert(window.face); //pretty
- alert(window.sock); //undefined
- alert(sock); // ERROR: sock not defined
- </script>
2.11
- <script type="text/javascript">
- function method()
- {
- var window={};
- alert(window.location);
- }
- alert(window.location);
- method();
- alert(window.location);
- </script>
2.12
- <script type="text/javascript">
- var window={};//ERROR:非法赋值!
- // this works in IE,but throw an Exception in firefox
- alert(window.location);
- </script>
2.13
- <script type="text/javascript">
- /** 这是一段很让人恼火的代码
- 可以禁用alert
- */
- window.alert("hello world");
- window.alert=function(str){
- document.write(str);
- };
- alert("hello world");
- window.alert("hello world");
- </script>
2.14:
- 注意这三个html文件的结果有什么不同.
- a.html:
- <script type="text/javascript">
- alert(sock);
- function sock()
- {
- alert("function sock executed!");
- }
- alert(sock);
- </script>
- b.html:
- <script type="text/javascript">
- alert(sock);
- var sock=function()
- {
- alert("function sock executed!");
- }
- alert(sock);
- </script>
- c.html:
- <script type="text/javascript">
- // 这里并不弹出"undefined"
- // 有点偏心啊!
- alert(sock);
- </script>
2.15
看看IE,firefox下分别运行有何不同:
- <script type="text/javascript">
- Object.prototype.hello=function(){
- alert("hello");
- }
- window.hello();
- </script>
1条评论 »
发表评论
Powered by WordPress with Pool theme design by Borja Fernandez.
Entries and comments feeds.
Valid XHTML and CSS. ^Top^
测试你的这些案例,对我很有用,但是可惜的是你2.7至2.10得到的结果和我测试的结果不同。
评论 由 Lunatic Sun — 02月 21, 2008 #